什么是svchost?为什么要运行它的多个实例?


27

我的桌面上运行着六个实例,而我管理的服务器上可能运行着十个实例。这是什么,对系统功能至关重要吗?


大声笑。我的笔记本电脑中有91个正在运行!
森雅各布

Answers:


16

svchost,在Windows中托管服务。请参见KB。如果使用Process Explorer,则可以查看特定进程中正在运行哪些服务。


1
那么,这与Linux下的inetd差不多吗?一个通用的服务器框架,以便开发人员可以编写服务而不必担心代码的服务器部分吗?
贾森·谭

杰森(Jason)的想法与此类似,但显然比inetd具有更大的范围,后者通常仅支持webbish类型的任务,不是吗?虽然有一个很好的类比,但肯定足够接近现金……
罗伯·摩尔

20

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 

+1感谢您提供的信息。...您和您的8000点代表...虽然非常认真,但这是一种很棒的资源。我认为自己精通Win CLI,但没有意识到这一点。谢谢!
cop1152 2009年

7

Svchost是“服务主机”的缩写。它可使计算机上的大多数服务保持运行。将有一些服务托管在自己的.exe文件中,但是大多数Windows的服务都需要托管在svchost.exe进程内。机器上的服务处理重要的内容,例如网络,RpC服务器,音频,事件日志等。

在“开始”->“运行”中键入“ services.msc”以查看您在计算机上运行的服务。如果您认为任何人都不需要,可以停止该服务。

键入“ tasklist / SVC”以查看哪些服务由不同的svchost.exe文件承载。


1

这是一个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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.