sc qc 是查询Windows服务可执行文件路径最直接的方法,通过读取SCM注册信息获取BINARY_PATH_NAME字段值,无需服务运行且轻量无依赖。
用 sc qc 查服务可执行文件路径最直接
windows 服务启动时加载的二进制文件路径,sc qc 是最轻量、无需额外工具的方案。它直接读取服务控制管理器(scm)注册信息,不依赖进程是否正在运行。
操作方式很简单:打开管理员权限的命令提示符或 PowerShell,执行:
sc qc <服务名>
例如查 Windows Update 服务:
sc qc wuauserv
输出中关键字段是 BINARY_PATH_NAME,它的值就是服务对应的磁盘路径(含参数)。注意该路径可能带引号、空格或启动参数,实际文件是引号内第一个以 .exe 结尾的部分(如 "C:Windowssystem32svchost.exe" -k netsvcs 中真实文件是 C:Windowssystem32svchost.exe)。
- 服务名大小写不敏感,但必须准确(可用
sc query列出所有服务名) - 若返回
[SC] QueryServiceConfig FAILED 5:,通常是权限不足,务必用管理员身份运行 - 部分服务(如驱动类)可能显示为
driver类型,BINARY_PATH_NAME指向.sys文件
PowerShell 里用 Get-Service + Get-WmiObject 补全细节
Get-Service 本身不暴露二进制路径,但配合 WMI 查询能一次获取名称、状态和路径,适合批量处理或写脚本。
推荐组合命令:
Get-Service | Where-Object {$_.Status -eq 'Running'} | ForEach-Object { $svc = $_; Get-WmiObject -Class Win32_Service -Filter "Name='$svc.Name'" | Select-Object Name, State, PathName }
更简洁的单服务查法:
Get-WmiObject Win32_Service -Filter "Name='wuauserv'" | Select-Object Name, PathName, State
PathName 字段等价于 sc qc 的 BINARY_PATH_NAME,但 PowerShell 输出更易解析。
- WMI 查询在老旧系统(如 Win7)上兼容性好,但速度略慢于
sc - 如果服务名含空格或特殊字符,
-Filter中需用单引号包裹,双引号会导致变量展开错误 -
PathName可能为空(如某些托管服务),此时需查其宿主进程(如svchost.exe加载的 DLL)
服务指向 svchost.exe 时,怎么定位具体 DLL?
大量系统服务共用 svchost.exe,BINARY_PATH_NAME 只显示 svchost.exe -k xxx,真正逻辑在 DLL 里。这时得结合服务配置里的 ServiceDLL 注册表项或进程加载视图。
最稳妥的方式是查注册表:
reg query "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost" /v <组名>
例如 -k netsvcs 对应组名 netsvcs,查到该键值后,再逐个检查每个服务在 HKLMSYSTEMCurrentControlSetServices\ParametersServiceDLL 下的字符串值。
- 不是所有
svchost组都对应注册表子键;有些组名(如LocalServiceNetworkRestricted)需查HKLMSYSTEMCurrentControlSetServices\Parameters下的ServiceDll - 用
Process Explorer(Sysinternals 工具)直接右键svchost.exe进程 → Properties → DLLs 标签页,能实时看到已加载的 DLL 路径,比注册表更直观 - 修改
ServiceDLL值有风险,仅用于定位,切勿随意更改
为什么资源管理器里“打开文件位置”经常失效?
在服务管理器(services.msc)中右键服务 → “打开文件位置”,这个功能底层调用的是服务的 ImagePath,但它会跳过引号、参数,甚至对 svchost 组直接报错“找不到文件”。本质是 GUI 层做了过度简化。
常见失效场景:
- 路径含空格且未加引号(旧版服务配置缺陷,
sc qc仍能正确解析) - 服务由
dllhost.exe或msiexec.exe启动,GUI 不识别这类宿主 - 服务二进制被移除或损坏,但 SCM 缓存未刷新,GUI 尝试打开已不存在的路径
遇到“打开文件位置”灰掉或报错,别纠结,退回命令行用 sc qc —— 它不渲染界面,只读元数据,稳定可靠。
真正容易被忽略的是:服务路径可能是相对路径(极少见,多见于第三方安装包错误配置),此时需结合服务所在目录(如 C:Program Files)手动拼接;还有符号链接或 NTFS 重解析点,dir 看不到真实目标,得用 fsutil reparsepoint query 检查。

















