要查清某个 svchost.exe 实例承载的服务,需用命令行或任务管理器:①管理员运行 tasklist /svc /fi "imagename eq svchost.exe";②任务管理器“详细信息”页启用“服务”列;③通过 -k 参数结合注册表查看服务组;④PowerShell 用 Get-CimInstance 关联进程与服务。
在 windows 服务管理器(services.msc)中,无法直接看到某个 svchost.exe 进程具体承载了哪些子服务,因为服务管理器只显示服务本身,不展示其宿主进程关系。要查清某个 svchost.exe 实例包含哪些服务,需借助命令行工具或任务管理器的进阶功能。
使用命令提示符(管理员权限)查看 svchost 与服务映射
这是最常用、最可靠的方法:
- 以管理员身份运行命令提示符或 PowerShell
- 输入以下命令列出所有 svchost 进程及其承载的服务:
tasklist /svc /fi "imagename eq svchost.exe" - 输出中每行显示一个 svchost 进程的 PID 和它加载的所有服务名(如:`svchost.exe 1234 MyAppService, Dnscache, Dhcp`)
- 若只想查某个特定 PID 对应的服务,可加 PID 过滤:
tasklist /svc /fi "pid eq 1234"
通过任务管理器定位并关联服务(Win10/Win11)
图形化方式,适合快速定位高资源占用的 svchost:
- 打开任务管理器(Ctrl+Shift+Esc),切换到“详细信息”选项卡
- 右键点击某一列标题 → 勾选“命令行”(可选,用于查看 -k 参数)和“服务”(关键)
- 找到目标
svchost.exe行,其“服务”列会显示该进程托管的所有服务名(可能缩略,悬停可看全称) - 双击“服务”列内容,可跳转到“服务”选项卡并自动选中对应服务
利用 svchost 的 -k 参数反向推断服务组
每个 svchost 实例通常通过 -k 参数指定服务组(如 -k netsvcs),该参数定义了预加载的服务集合:
- 在任务管理器“详细信息”页,启用“命令行”列,查看 svchost 启动时的完整命令
- 常见 -k 值示例:
netsvcs(网络相关)、LocalServiceNetworkRestricted、RPCSS等 - 可通过注册表路径
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost查看各组包含的服务列表 - 注意:-k 分组只是逻辑分组,实际加载的服务可能因系统配置或启动策略而不同,最终以
tasklist /svc结果为准
用 PowerShell 获取更结构化的结果
适合批量分析或脚本处理:
- 运行以下命令获取所有 svchost 及其服务的表格化输出:
Get-WmiObject Win32_Service | Where-Object {$_.ProcessId -ne 0} | Group-Object ProcessId | ForEach-Object { $pid = $_.Name; $_.Group | Select-Object @{n='PID';e={$pid}}, Name, DisplayName, State } - 或更简洁地关联进程与服务:
Get-CimInstance Win32_Service | Where-Object StartMode -eq 'Auto' | Select Name, DisplayName, ProcessId | Sort-Object ProcessId










