svchost.exe是什么进程,为什么有这么多svchost.exe在运行?

如果您曾经浏览过任务管理器,您可能想知道为什么有这么多服务主机进程在运行。你不能杀死他们,你肯定没有启动他们。那么,它们是什么?

服务主机进程充当从 DLL 文件加载服务的外壳。服务被组织成相关的组,每个组在服务宿主进程的不同实例中运行。这样,一个实例中的问题不会影响其他实例。此过程是您无法阻止运行的 Windows 的重要组成部分。 

这篇文章是一部分我们正在进行一系列解释各种进程在任务管理器中发现,像 dwm.exe,Ctfmon.exe会,  mDNSResponder.exe,conhost.exe,RUNDLL32.EXE,  Adobe_Updater.exe,和其他许多人。不知道这些服务是什么?最好开始阅读!

那么什么是服务主机进程?

根据微软的说法,这是答案:

Svchost.exe 是从动态链接库运行的服务的通用主机进程名称。

但这对我们并没有多大帮助。不久前,Microsoft 开始将大部分 Windows 功能从依赖内部 Windows 服务(从 EXE 文件运行)改为使用 DLL 文件。从编程的角度来看,这使得代码更可重用,并且可以说更容易保持最新状态。问题是您不能像启动可执行文件一样直接从 Windows 启动 DLL 文件。相反,使用从可执行文件加载的外壳来承载这些 DLL 服务。于是服务主机进程 (svchost.exe) 诞生了。

为什么有这么多服务主机进程在运行?

相关文章 什么是这个过程以及它为什么在我的 PC 上运行?

如果您曾经查看过控制面板中的服务部分,您可能已经注意到 Windows 需要很多服务。如果每项服务都在一个服务主机进程下运行,则一项服务的故障可能会导致所有 Windows 瘫痪。相反,它们是分开的。

服务被组织成一些相互关联的逻辑组,然后创建单个服务主机实例来托管每个组。例如,一个Service Host进程运行与防火墙相关的三个服务。另一个服务主机进程可能运行与用户界面相关的所有服务,依此类推。例如,在下图中,您可以看到一个 Service Host 进程运行多个相关的网络服务,而另一个运行与远程过程调用相关的服务。

svchost.exe是什么进程,为什么有这么多svchost.exe在运行?

所有这些信息对我有什么好处吗?

相关文章 你应该禁用 Windows 服务来加速你的电脑吗?

老实说,不是很多。在 Windows XP(和以前的版本)的时代,当 PC 的资源更加有限且操作系统没有那么精细调整时,通常建议停止 Windows 运行不必要的服务。现在,我们不再建议禁用服务。现代 PC 往往装有内存和高性能处理器。再加上在现代版本中处理 Windows 服务的方式(以及运行的服务)已经简化的事实,消除您认为不需要的服务实际上不再有太大影响。

也就是说,如果您注意到 Service Host 的特定实例(或相关服务)导致问题,例如 CPU 或 RAM 使用率持续过高,您可以检查所涉及的特定服务。这至少可以让您知道从哪里开始故障排除。有几种方法可以准确查看特定服务主机实例托管的服务。您可以检查任务管理器中的内容或使用名为 Process Explorer 的出色第三方应用程序。

在任务管理器中查看相关服务

如果您使用的是 Windows 8 或 10,进程会以其全名显示在任务管理器的“进程”选项卡上。如果一个进程充当多个服务的宿主,您可以通过简单地展开该进程来查看这些服务。这使得识别哪些服务属于服务宿主进程的每个实例变得非常容易。

svchost.exe是什么进程,为什么有这么多svchost.exe在运行?

您可以右键单击任何单个服务来停止该服务,在“服务”控制面板应用程序中查看它,甚至在线搜索有关该服务的信息。

svchost.exe是什么进程,为什么有这么多svchost.exe在运行?

如果您使用的是 Windows 7,则情况会有所不同。Windows 7 任务管理器没有以相同的方式对进程进行分组,也没有显示常规的进程名称——它只显示运行的“svchost.exe”的所有实例。您必须进行一些探索以确定与“svchost.exe”的任何特定实例相关的服务。

在 Windows 7 任务管理器的“进程”选项卡上,右键单击特定的“svchost.exe”进程,然后选择“转到服务”选项。

svchost.exe是什么进程,为什么有这么多svchost.exe在运行?

这会将您转到“服务”选项卡,其中在“svchost.exe”进程下运行的服务都被选中。

svchost.exe是什么进程,为什么有这么多svchost.exe在运行?

然后,您可以在“说明”列中看到每个服务的全名,因此如果您不希望该服务运行或解决它给您带来问题的原因,您可以选择禁用该服务。

使用 Process Explorer 检查相关服务

作为 Sysinternals 系列的一部分,Microsoft 还提供了一个出色的高级工具来处理流程。只需下载Process Explorer 并运行它——它是一个便携式应用程序,因此无需安装。Process Explorer 提供了各种高级功能,我们强烈建议您阅读了解 Process Explorer 的指南以了解更多信息。

 

但是,出于我们的目的,Process Explorer 将相关服务分组到“svchost.exe”的每个实例下。它们按文件名列出,但它们的全名也显示在“描述”列中。您还可以将鼠标指针悬停在任何“svchost.exe”进程上,以查看包含与该进程相关的所有服务的弹出窗口——即使是那些当前未运行的服务。

svchost.exe是什么进程,为什么有这么多svchost.exe在运行?

这个过程会不会是病毒?

该进程本身是一个正式的 Windows 组件。虽然病毒可能已经用它自己的可执行文件替换了真正的服务主机,但可能性很小。如果您想确定,您可以查看进程的底层文件位置。在任务管理器中,右键单击任何服务主机进程并选择“打开文件位置”选项。

svchost.exe是什么进程,为什么有这么多svchost.exe在运行?

如果该文件存储在您的 WindowsSystem32 文件夹中,那么您可以相当确定您没有感染病毒。

svchost.exe是什么进程,为什么有这么多svchost.exe在运行?

 

也就是说,如果您仍然希望更加安心,您可以随时使用您喜欢的病毒扫描程序来扫描病毒。安全总比后悔好!