Answers:
Windows的许多执行组件都是作为服务实现的(请参阅打开的机器上的所有服务Control Panel > Administrative Tools > Services
)。这些是在后台运行的专用程序。它们不是由登录用户启动的,而是由操作系统本身启动的。
大多数服务不是独立的可执行文件(EXE文件),而是在库(DLL)中实现的,正在运行的进程可以使用这些库。顾名思义,Svchost或“服务主机”是Windows的标准可执行文件,用于运行这些DLL。您可以在%systemroot%\system32
目录中找到svchost.exe文件。
如果您想知道哪个svchost实例正在执行哪个服务,请键入
tasklist /svc /fi "IMAGENAME eq svchost.exe"
在命令行控制台(cmd)上。
例如,在我制作屏幕快照的机器上,svchost的实例之一正在运行21种不同的服务。根据Microsoft的文档,这种服务分组可以更好地控制和简化调试。
在以下注册表项中标识了Svchost.exe组:
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost
提示(如果运行Windows Vista,Windows 7或Windows Server 2008):可以打开任务管理器,右键单击特定的svchost.exe进程,然后选择“转到服务”选项。这将显示“ 服务”选项卡,其中svchost.exe
将标记在所选进程下运行的所有服务。
Microsoft的下载中心有一个非常有趣的文档:
Microsoft Windows Server 2003系统服务参考
本文档包含Windows Server 2003操作系统家族所有可用的服务的摘要。这些服务按显示名称的字母顺序列出。在每种服务的描述之后,一个表列出了有关该服务的关键信息。
列出了每个Windows服务及其所有详细信息。例如,您了解到终端服务的可执行文件名为
svchost.exe -k termsvcs
Svchost是“服务主机”的缩写。它可使计算机上的大多数服务保持运行。将有一些服务托管在自己的.exe文件中,但是大多数Windows的服务都需要托管在svchost.exe进程内。机器上的服务处理重要的内容,例如网络,RpC服务器,音频,事件日志等。
在“开始”->“运行”中键入“ services.msc”以查看您在计算机上运行的服务。如果您认为任何人都不需要,可以停止该服务。
键入“ tasklist / SVC”以查看哪些服务由不同的svchost.exe文件承载。
这是一个PowerShell单行代码,它输出svchost.exe进程中托管的所有服务:
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
单线的较短版本如下所示:
gps svchost | % {gwmi win32_service -f "processid=$($_.id)"} | ft proc*,name,disp*,stat* -auto
本文可能会有所帮助:http : //www.gfi.com/blog/exploring-svchostexe-part-1/