在基于nt内核的windows操作系统家族中,不同版本的windows系统,存在不同数量的“svchost”进程,用户使用“任务管理器”可查看其进程数目。一般来说,win2000有两个svchost进程,winxp中则有四个或四个以上的svchost进程(以后看到系统中有多个这种进程,千万别立即判定系统有病毒了哟),而win2003server中则更多。这些svchost进程提供很多系统服务,如:rpcss服务(remoteprocedurecall)、dmserver服务(logicaldiskmanager)、dhcp服务(dhcpclient)等。到了WindowsVista 系统时svchost 进程多达12个,这些svchost.exe都是同一个文件路径下C:WindowsSystem32svchost.exe , 它们分别是imgsvc、NetworkServiceNetworkRestricted、 LocalServiceNoNetwork、NetworkService 、LocalService 、netsvcs、LocalSystemNetworkRestricted、 LocalServiceNetworkRestricted、services 、rpcss、 WerSvcGroup 、DcomLaunch服务组。
windows系统进程分为独立进程和共享进程两种,“svchost.exe”文件存在于“%systemroot%system32”目录下,它属于共享进程。随着windows系统服务不断增多,为了节省系统资源,微软把很多服务做成共享方式,交由svchost.exe进程来启动。但svchost进程只作为服务宿主,并不能实现任何服务功能,即它只能提供条件让其他服务在这里被启动,而它自己却不能给用户提供任何服务。原来这些系统服务是以动态链接库(dll)形式实现的,它们把可执行程序指向svchost,由svchost调用相应服务的动态链接库来启动服务。
因为svchost进程启动各种服务,所以病毒、木马也想尽办法来利用它,企图利用它的特性来迷惑用户,达到感染、入侵、破坏的目的(如冲击波变种病毒“w32.welchia.worm”)。但windows系统存在多个svchost进程是很正常的。那么如何判断你的电脑是否让病毒木马看上了呢?当您运行了Windows任务管理器后,您可能会在“进程”选项卡中看到若干个名称均为svchost.exe的进程正在同时运行。而且,这些svchost.exe可能有一个或若干个占用了较多的系统资源,影响了计算机的工作效率。
svchost.exe位于Windowssystem32系统文件夹,其文件描述为“Generic Host Processfor Win32Services”。当Windows启动时,svchost.exe将自动检查Windows注册表的系统服务组成、构建系统服务列表,然后将相关的.DLL动态链接库文件加载为具体的运行中的系统服务。因此,我们可以将svchost.exe看作一个“用于加载系统服务的宿主程序”。
由于每个svchost.exe进程可能会加载一个或若干个系统服务,直到所有的svchost.exe将全部系统服务加载完毕,所以我们会在任务管理器中看到多个svchost.exe同时运行,这是设计使然。当您在Windows任务管理器中查看svchost.exe进程时,svchost.exe进程的“用户名”应该显示为SYSTEM、LOCAL SERVICE或NETWORKSERVICE。(如果在任务管理器中看不到“用户名”,请在菜单中选择“查看”-“列设置”,选中“用户名”复选框。)如果某个svchost.exe进程的“用户名”显示的是用户帐户的名称(例如Administrator),则这个svchost.exe很可能是冒仿的恶意程序。另外您需要确认,您看到的svchost.exe进程的名称拼写是否有误。比如假设显示的进程名称是SVCH0ST.EXE(用数字0替换了字母O),则很可能是冒仿的恶意程序;再比如进程的名称虽然是SVCHOST.EXE,但此进程却没有位于Windowssystem32(WindowsVista以上版本的任务管理器可以查看进程所在的文件夹路径),则也可能是冒仿的恶意程序。
由于svchost.exe是加载系统服务的宿主进程,所以您如果发现某svchost.exe进程占用的系统资源较多,即表明通过这个svchost.exe进程加载的系统服务占用的系统资源较多。您首先需要确定通过这个svchost.exe进程加载的系统服务具体是什么,然后根据计算机的实际情况决定是否关闭相应的系统服务、以释放服务占用的系统资源,这样svchost.exe即可释放相应的系统资源。虽然大多数系统服务只有在遇到故障时才会占用较高的系统资源,但某些特殊的服务即使是正常工作状态也将消耗较多系统资源。例如AutomaticUpdates自动更新服务,当自动更新在后台搜索可用的系统更新程序时必将占用较高的资源,这是设计使然而不是故障。
判断一个SVCHOST.EXE加载了哪些系统服务有两种方法
方法一:
- 在Windows任务管理器的“进程”选项卡中查看占用资源较高的svchost.exe进程对应的PID,将PID记下。(如果在任务管理器中看不到“PID”,请在菜单中选择“查看”-“列设置”,选中“PID”复选框。)
- 以管理员权限运行命令提示符(CMD.EXE),在命令提示符中执行:TASKLIST–SVC您将看到类似如下所示的结果:
图像名 PID 服务
svchost.exe 1104 DcomLaunch,TermServices
svchost.exe 1188 RpcSs
…… - 对 照您在任务管理器中看到的svchost.exe的PID,在上述结果中查找对应的svchost.exe。例如,假设您在任务管理器中看到PID为1188的svchost.exe占用了较多系统资源,而TASKLIST–SVC的结果显示PID为1188的svchost.exe加载的服务是RpcSs,即表明RpcSs服务(RemoteProcedure Call (RPC) 服务)占用了较高的系统资源。
方法二:
- 在microsoft.com下载系统工具Process Explorer:http://www.microsoft.com/technet/sysinternals/Utilities/ProcessExplorer.mspx(http://www.microsoft.com/technet/sysinternals/Utilities/ProcessExplorer.mspx)
- 运行ProcessExplorer,在进程列表中找到占用系统资源较多的svchost.exe进程,右键单击选择Properties(属性),切换至Services(服务)选项卡,在这里即可查看svchost.exe进程加载的系统服务是什么。
常见中毒现象处理
1.病毒木马原因导致的 ,因为svchost进程启动各种服务,所以病毒、木马也想尽办法来利用它,企图利用它的特性来迷惑用户,使svchost成为病毒的傀儡进程,进行病毒下载操作,从而下载大量木马,盗取用户信息。推荐使用金山卫士对木马病毒木马查杀。
2. IE组件在注册表中注册信息被破坏 , 重新注册ie组件信息问题即可解决。
3.如果电脑有打印机,还可能是因为打印机驱动安装错误,也会造成的错误 ,只要重新安装打印机驱动即可解决
4.某些软件与svchost.exe发生冲突导致的,解决方法就是卸载该软件或者升级该软件到最新版本。
5.现在大多数网民喜欢使用ghost系统,破解版系统,但是使用这些系统可能存在不兼容因素 ,很容易导致发生的错误,最好解决方法就是安装使用正版操作系统。