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

jld*_*ger 27 windows windows-service svchost process

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

spl*_*tne 20

Windows 的许多执行组件都是作为服务实现的(请参阅您机器上的所有服务打开Control Panel > Administrative Tools > Services)。这些是在后台运行的专门程序。它们不是由登录用户启动的,而是由我的操作系统本身启动的。

大多数服务不是独立的可执行文件(EXE 文件),而是在库 (DLL) 中实现的,可以由运行的进程使用。顾名思义,Svchost 或“服务主机”是运行这些 DLL 的 Windows 标准可执行文件。您可以在%systemroot%\system32目录中找到 svchost.exe 文件。

如果您想知道 svchost 的哪个实例正在执行哪个服务,请键入

 tasklist /svc /fi "IMAGENAME eq svchost.exe"
Run Code Online (Sandbox Code Playgroud)

在命令行控制台 (cmd) 上。

例如,在我制作屏幕截图的机器上,svchost 的一个实例正在运行 21 个不同的服务。根据微软的文档,这种服务分组允许更好的控制和更容易的调试。

替代文字

Svchost.exe 组在以下注册表项中标识:

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost
Run Code Online (Sandbox Code Playgroud)

提示(如果您运行的是 Windows Vista、Windows 7 或 Windows Server 2008):您可以打开任务管理器并右键单击特定的 svchost.exe 进程,然后选择“转到服务”选项。这将显示服务选项卡,其中svchost.exe将标记在所选进程下运行的所有服务。

微软的下载中心有一个很有趣的文档:

Microsoft Windows Server 2003 系统服务参考

本文档包含可用于 Windows Server 2003 操作系统系列的所有服务的摘要。这些服务按显示名称的字母顺序列出。在对每项服务的描述之后,有一个表格列出了有关该服务的关键信息。

列出了每个 Windows 服务及其所有详细信息。例如,您了解到终端服务服务的可执行文件名是

 svchost.exe -k termsvcs 
Run Code Online (Sandbox Code Playgroud)


Rob*_*upt 16

svchost,在 Windows 中托管服务 请参阅知识库文章。如果您使用Process Explorer,您可以看到哪些服务正在特定流程中运行。


Fro*_*rud 7

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

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

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