通过任务管理器“服务”选项卡右键目标服务并选择“转到详细信息”,可直接定位其对应进程pid;命令行可用sc queryex 服务名或tasklist /svc查询pid;对多服务共用svchost的情况,需结合tasklist /svc或powershell的get-ciminstance进一步拆解服务映射。
直接通过任务管理器 + 服务关联就能查到,不需要复杂工具或脚本。
在任务管理器中定位服务对应的 PID
打开任务管理器(Ctrl+Shift+Esc),切换到“服务”选项卡。按名称找到目标服务(比如 Winmgmt、Dhcp 或自定义服务名),右键点击它,选择“转到详细信息”。系统会自动跳转到“详细信息”选项卡,并高亮显示该服务所托管的 svchost.exe 进程——这个进程的 PID 就是你要找的值。
注意:部分服务(如 WMI 提供程序)可能由独立进程运行(如 WmiPrvse.exe),这类服务在“服务”页右键后也会直接跳转到对应进程,PID 同样可见。
用命令行快速确认服务与 PID 的关系
以管理员身份运行命令提示符或 PowerShell,执行:
Windows 命令行编码与兼容规范。涵盖 GBK/UTF-8 编码、PowerShell/pwsh 互操作、Python/Node.js、Git 配置及代码生成规则。适用于 Windows 10/11 + MSYS2/Git Bash 环境下的所有命令行操作。
- sc queryex 服务名 —— 查看服务状态及当前 PID(字段为 PID)
- tasklist /svc | findstr "服务名" —— 列出所有服务及其归属进程,含 PID 和映射关系
例如查 WMI 服务:sc queryex winmgmt 会返回类似 PID: 2752 的结果;再用 tasklist /fi "pid eq 2752" 可验证该 PID 对应的是哪个 svchost.exe 实例。
处理多实例 svchost 共享 PID 的情况
Windows 把多个服务打包进同一个 svchost.exe 进程,所以单看 PID 不知道具体是哪个服务在耗资源。这时需进一步拆解:
- 用 tasklist /svc /fi "imagename eq svchost.exe" 查出每个 svchost 承载的服务列表
- 结合 CPU/内存排序,在“详细信息”页找到高负载的 svchost PID,再回查它托管了哪些服务
- 也可用 PowerShell 命令:
Get-CimInstance Win32_Service | Where-Object {$_.ProcessId -eq 2752} | Select Name,DisplayName
补充:IIS 应用程序池类服务的特殊处理
像 w3wp.exe 这类 IIS 工作进程不直接对应 Windows 服务名,而是绑定到应用池。查它的 PID 要走 IIS 路径:
- 打开命令提示符,进入
C:\Windows\System32\inetsrv - 执行
appcmd list wp,输出中会显示每个 w3wp.exe 的 PID 及其所属的应用程序池名 - 再进 IIS 管理器,对照应用池名即可定位具体网站或应用










