首页 > Client, Other > svchost.exe到底是什么?

svchost.exe到底是什么?

2008年8月12日

读这篇文章的疑问是什么?因为你正想知道究竟为什么有差不多一打的svchost.exe进程在你的计算机中运行。你不能手工结束他们,并且你不记得他们是从何时开始运行。它们是干嘛的?

Svchost是什么?

根据微软的说法:“svchost.exe是以动态链接库为动力运行的服务的一个一般进程名。”
不久前,微软开始将内部Windows服务的功能用.dll文件来替代.exe文件。 从编程视角来看,这样对可用性提高更有意义,但问题是你并不能直接在Windows中执行一个.dll文件,它必须被加载并转化成可执行程序(.exe)。 因此svchost.exe进程便诞生了。

为什么有如此多的Svchost.exe运行?

如果你曾经在控制面板里面看过“服务”部分,你应该会注意到有许多服务都被Windows所需求。如果每个单独的服务都运行在同一个单一svchost.exe实例下,任何一个错误就将能搞跨整个Windows。因此,它们才被分隔开来。
这些服务被组织进一个逻辑组当中,并为每一个逻辑组创建一个单一Svchost.exe实例。 例如,一个svchost.exe运行与防火墙有关的3个服务。另一个svchost.exe实例则可能运行全部与用户界面相关的服务,等等。

我能对Svchost做什么?

你能通过禁用或停止一些“绝对不需要用”的服务来达到削减服务的目的。 另外,如果你发现某个Svchost.exe实例占用非常高的CPU性能,你可以尝试重启此实例下的服务。
最大的问题在于如何识别服务运行在哪个svchost.exe实例下。
如果你对我们谈论的感到好奇,请打开Windows任务管理器,并点击“显示所有用户的进程”按钮:

1

通过命令行查看(Vista或XP)

如果你想看到哪些服务正被一个Svchost.exe实例运行,你可以从命令行里面输入tasklist命令来看到这个目录列表。

tasklist /SVC

2

Vista中使用任务管理器查看

你可以右击一个svchost.exe进程并选择“转到服务”选项。

3

这将会跳转到服务选项卡,并且运行在此svchost.exe进程下的所有服务将高亮被列出:

4

这样做的好处在于你可以直接在描述中看到服务的名字,因此,如果你不希望它运行便可以选择禁用服务。

vista或XP中使用Process Explorer查看

你可以通过使用微软Sysinternals的优秀工具Process Explorer 来查看服务正作为svchost.exe进程的一部分在运转什么。
在进程上移动你的鼠标,此时将高亮列出所有的服务:

5

或者你双击一个svchost.exe实例并选择服务选项卡,如果你这么做,你便能停止其中的任何一项服务。

6

禁用服务

在控制面板的管理工具中打开服务,或者在开始菜单的搜索或运行中敲入services.msc。
在服务列表中找到你想禁用的服务,并双击或右击选择属性。

7

更改启动类型为禁用并点击停止按钮立即停止服务。

8

如果你喜欢,也能通过命令方式来禁用服务。在这条命令中,服务名称“trkwks”来自上述对话框,但如果你回到文章开头的tasklist命令,你会发现那种查看方式更有效率。
sc config trkwks start= disabled





声明  :  转载请注明出处: 碎片IT资讯



作者: 分类: Client, Other 标签:


  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.