PS>get-process svchost | % {get-wmiobject win32_service -filter "processid=$($_.id)"} | format-table processid,name,displayname,state,status -auto
processid name displayname state status
--------- ---- ----------- ----- ------
316 HTTPFilter HTTP SSL Running OK
1328 DcomLaunch DCOM Server Process Launcher Running OK
1328 TermService Terminal Services Running OK
1392 RpcSs Remote Procedure Call (RPC) Running OK
1528 AudioSrv Windows Audio Running OK
1528 BITS Background Intelligent Transfer Service Running OK
1528 Browser Computer Browser Running OK
Windows 的许多执行组件都是作为服务实现的(请参阅您机器上的所有服务打开
Control Panel > Administrative Tools > Services
)。这些是在后台运行的专门程序。它们不是由登录用户启动的,而是由我的操作系统本身启动的。大多数服务不是独立的可执行文件(EXE 文件),而是在库 (DLL) 中实现,可供正在运行的进程使用。顾名思义,Svchost 或“服务主机”是 Windows 运行这些 DLL 的标准可执行文件。您可以在目录中找到 svchost.exe 文件
%systemroot%\system32
。如果您想知道哪个 svchost 实例正在执行哪个服务,请键入
在命令行控制台 (cmd) 上。
例如,在我制作屏幕截图的机器上,svchost 的一个实例正在运行 21 个不同的服务。根据微软的文档,这种服务分组允许更好的控制和更容易的调试。
Svchost.exe 组在以下注册表项中标识:
提示(如果您运行 Windows Vista、Windows 7 或 Windows Server 2008):您可以打开任务管理器并右键单击特定的 svchost.exe 进程,然后选择“转到服务”选项。这将显示“服务
svchost.exe
”选项卡,其中将标记在所选进程下运行的所有服务。在微软的下载中心有一个非常有趣的文档:
Microsoft Windows Server 2003 系统服务参考
列出了每个 Windows 服务及其所有详细信息。例如,您了解到终端服务服务的可执行文件名是
svchost,在 Windows 中托管服务 请参阅KB。如果您使用Process Explorer,您可以查看哪些服务正在特定进程中运行。
Svchost 是“服务主机”的缩写。它使您机器上的大部分服务保持运行。将有一些服务将自己托管在自己的 .exe 文件中,但大多数 Windows 服务需要托管在 svchost.exe 进程中。你机器上的服务处理重要的东西,比如网络、RpC 服务器、音频、事件日志等。
在 Start->Run 中键入“services.msc”以查看您在计算机上运行的服务。如果您认为任何人不必要,您可以停止该服务。
键入“tasklist /SVC”以查看不同的 svchost.exe 文件托管哪些服务。
这是一个输出 svchost.exe 进程中托管的所有服务的 PowerShell 单行程序:
单线的较短版本如下所示:
这篇文章可能会有所帮助:http ://www.gfi.com/blog/exploring-svchostexe-part-1/