浅谈svhost.exe进程的作用

王朝互联网·作者佚名  2011-12-20
窄屏简体版  字體: 小  |  中  |  大  |  超大  

先告诉你svhost.exe的背景,让我们慢慢分析把:首先我们看看微软的非官方解释: “svchost.exe is a generic host process name for services that run from dynamic-link libraries”。翻译过来就是:“svchost.exe是加载自动态链接库的各种服务的通用托管进程名”。

然后打开电脑的任务管理器查看系统进程的时候,总是会看到数个svhost.exe进程项,但你没有印象开启过他们啊,这些进程数目还时多时少,种种特征让人有理由怀疑这些进程是木马或者病毒。那svhost.exe到底是“善”是“恶”?

其实,讲实在话,看了官方解释只会让脑袋里的问号增多,没几个人是计算机专家。但我们先把svchost.exe的来龙去脉分析一下就会雾散云开了。早些时候(具体时间没考证),微软把Windows内部服务的各种功能程序从.exe文件转移到.dll文件,从编程角度来讲,这增加了程序的重用性,但也带来了一个问题:在windows中动态链接库文件(.dll)是无法直接启动的。因此,动态链接库文件只能从可执行文件(.exe)中加载,所以便有了svchost.exe。

那么为什么会有多个svhost.exe同时存在?

其实Windows操作系统的正常运行需要多个服务的支持,如果把所有服务都加载在一个svhost.exe进程,万一其中一个服务出现错误,那整个操作系统就会“崩盘”,所以必须把他们分开。

所以,操作系统把各种服务会按逻辑进行分组。一个svhost.exe进程管一个组。例如,一个svhost.exe加载了3个与防火墙相关的服务,那这3个服务属于一个逻辑分组,他们都被加载在一个svhost.exe里,而这个svhost.exe进程又与加载了别的服务的svhost.exe同时存在。

那么怎么处理svhost.exe问题?

其先,可以通过禁止或关闭一些svhost.exe来削减不必要的服务,另外,如果发现某个svhost.exe占用了出奇多的CPU资源,可以重启该svhost.exe进程以释放被占用资源。但是如果你想查看某个svhost.exe下加载了什么服务,有两种办法:

第一,使用命令行,这个最简单。开始菜单>>运行>>输入cmd>>输入tasklist /svc

第二,使用Process Explorer(下图)系统进程查看工具,把鼠标悬停在svhost.exe上即可在弹出窗口中查看它所加载的进程,如果要停掉某个服务,双击该服务所在的svhost.exe进程,在Services标签下的窗口内即可进行关闭服务操作。Process Explorer可从微软网站下载,免费。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航