svchost.exe占用cpu100%的解决方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

表 010 - 62603429(杨小姐) »
svchost.exe占用CPU 100%的解决方法
作者:车东发表于:2007-04-15 12:04 最后更新于:2007-05-25 06:05
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。

/blog/archives/001286.html
现象:
1.机器启动运行几分钟后svchost.exe就会占系统cpu资源的100%
2.拔掉网线就好了,重连上网后一会儿:svchost.exe又占cpu资源的99%;
解决:
假设你已经使用了免费杀毒软件排除了病毒和已经使用防间谍软件排除了恶意软件的影响:
想办法清空C:\WINDOWS\SoftwareDistribution 目录下所有的文件重启机器即可。

(C:\WINDOWS\SoftwareDistribution是Windows update服务的临时文件存放目录)
如果机器提示文件正在使用("Automatic Updates"服务正在运行)无法删除相应目录:
∙则想办法打开控制面板==>管理工具==>服务,找到"Automatic Updates",设置成手动启动,
∙重启后再删除 C:\WINDOWS\SoftwareDistribution。

问题就解决了。

∙然后再打开控制面板==>管理工具==>服务,找到"Automatic Updates",恢复成自动启动重启。

注意:重启后最好在上网条件比较好的地方让系统顺利完成一次系统自动更新。

推广:遇到类似问题的应该挺多的,如果你也发现这个方法有用,请将
/blog/archives/001286.html
这个链接加到你的blog里。

html代码: <a
xhref="/blog/archives/001286.html">svchost.exe< /a>
原因分析:
先说说什么是svchost.exe:简单的说没有这个服务机器几乎就上不了网了。

很多应用服务都是以来于这个接口RPC的,如果发现这个进程占了太多的CPU资源,
直接把系统的RPC服务禁用了会是一场灾难:因为连恢复这个界面的系统服务设置界面都无法使用了。

恢复的方法需要使用注册表编辑器,找到
HKEY_LOCAL_MACHINE >> SYSTEM >> CurrentControlSet >> Services >> RpcSs, 右侧找到Start属性,把它的值改为2再重启即可
造成svchost占系统CPU 100%的原因并非svchost服务本身:以上的情况是由于Windows Update服务下载/安装失败而导致更新服务反复重试造成的。

而Windows的自动更新也是依赖于svchost服务的一个后台应用,从而表现为svchost.exe负载极高。

常发生这类问题的机器一般是上网条件(尤其是去国外网站)不稳定的机器,比如家里的父母的机器,往往在安装机器几个月以后不定期发生,每个月的第二个星期是高发期:因为最近几年MS很有规律的在每个月的第二个星期发布补丁程序)。

上面的解决方法并不能保证不重发作,但是为了svchost文件而每隔几个月重装一次操作系统还是太浪费时间了。

教训:spoolsv.exe和svchost.exe的问题都是应用遇到失败/例外情况后自动重试造成的,本想为用户节省时间的设计,但是重试的频度过高反而导致了和病毒一样的效果。

参考资料:
∙svchost.exe CPU Usage 100%, when my Windows using Automatic Update ∙svchost.exe 吃掉所有 CPU 資源
∙微软官方说明:使用“自动更新”搜索更新或对使用 Windows Installer 的应用程序应用更新时,遇到涉及 Svchost.exe 进程的问题∙Windows Update使SVCHOST.exe的问题跟踪
让你做个高手全面认识Svchost.exe进程
日期:2006-1-26 12:03:32 人气:0 [大中小] 很多朋友对Svchost.exe进程都不太了解,有时在任务管理器中一旦看到有
多个该进程(图1中有6个),就以为自己的电脑中了病毒或木马,其实并非如此!正常情况下,Windows中可以有多个Svchost.exe进程同时运行,例如Windows 2000至少有2个Svchost进程,Windows XP中有4个以上,Windows 2003中则有更多,所以当你看到多个Svchost进程时,未必就是病毒!
图1
Svchost.exe进程是干什么的?
Svchost.exe文件存在于“%system root%\system32”(例如C:\Windows\system32)目录下,它是Windows NT核心的重要进程(Windows 9X没有该进程),专门为系统启动各种服务的。

例如Svchost.exe调用rpcss.dll文件,就会启动rpcss服务(remote procedure call)。

Svchost.exe实际上是一个服务宿主,它本身并不能给用户提供任何服务,但是可以用来运行动态链接库DLL文件,从而启动对应的服务。

Svchost.exe进程可以同时启动多个服务。

Svchost是如何启动系统服务的?
由于系统服务都是以动态链接库(DLL)形式实现的,它们把可执行程序指向Svchost,因此Svchost只要调用某个动态链接库,即可启动对应的服务。

那么Svchost启动某服务时,又是如何知道应该调用哪个动态链接库?这是由于系统服务在注册表中都设置了相关参数,因此Svchost通过读取某服务在注册表中的信息,即可知道应该调用哪个动态链接库,从而启动该服务。

下面我们以Svchost启动helpsvc(Help and Support)服务为例,介绍其启动服务的方法。

在Windows XP中点击“开始”|“运行”,输入“services.msc”命令,弹出服务对话框,然后双击打开“Help and Support”服务属性对话框,可以看到helpsvc服务的可执行文件的路径为“C:\WINDOWS\System32\svchost.exe -k netsvcs” (如图2),说明helpsvc 服务是依靠SVCHOST调用“netsvcs”参数来实现的,而参数的内容则是存放在系统注册表中的。

图2
在运行对话框中输入“regedit.exe”后回车,打开注册表编辑器,找到
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\helpsvc]项,找到类型为“REG_EXPAND_SZ”的键“magePath”,其键值为“%SystemRoot%\System32\svchost.exe -k netsvcs”(这就是在服务窗口中看到的服务启动命令),另外在“Parameters”子项中有个名为“ServiceDll”的键,其值为
“%WINDIR%\PCHealth\HelpCtr\Binaries\pchsvc.dll”,其中“pchsvc.dll”就是helpsvc服务要使用的动态链接库文件。

这样SVCHOST进程通过读取“helpsvc”服务注册
表信息,就能启动该服务了。

Svchost到底启动了哪些服务?
如果你想了解每个SVCHOST进程当前到底提供了哪些系统服务,可以在命令提示符下输入命令来查看。

例如在Windows XP中,打开“命令提示符”,键入tasklist /svc命令查看;在Windows 2000中,则输入“Tlist -S”命令来查看。

如果你在Windows XP中,想得到所有进程的详细信息,可以打开“命令提示符”,键入tasklist /svc>abc.txt 命令,于是在当前目录中,将会生成一个abc.txt文件,其内容就是当前正在运行的所有进程情况,例如进程名、PID号、该进程启动了哪些服务。

如何发现Svchost进程有问题?
由于Svchost进程可以启动各种服务,因此病毒、木马也经常伪装成系统的DLL文件,使Svchost调用它,从而进入内存中运行、感染和控制电脑。

建议你使用“Windows优化大师”进程管理器(可以到《个人电脑》的下载频道
的“系统工具”中去下载),查看所有Svchost进程的执行文件路径(如图3),正常的Svchost文件应该存在于“c:\Windows\system32”目录下,如果你发现其执行路径在其他目录下,就有可能染上了病毒或木马了,应该马上进行检测和处理。

图3
Svchost进程杀不掉怎么办?
如果有些Svchost进程,你在任务管理器中无法关闭之,可以使用ntsd命令来杀掉它,方法如下:
首先需要了解欲杀的Svchost进程,其PID是多少?在Windows XP下,按Ctrl+Alt+Del 打开任务管理器,点击“进程选项卡”|“查看”|“选择列”,在弹出的窗口中(图4),勾选“PID(进程标识符)”,然后回到任务管理器中,即可看见PID了(例如要杀的Svchost 进程,其PID是844)。

图4
接下来关闭该进程。

点击“开始”|“程序”|“附件”|“命令提示符”,在命令提示符下,输入命令ntsd -c q -p 844即可杀掉Svchost进程(PID是844)。

小提示:除了System、SMSS.EXE和CSRSS.EXE这三个进程,ntsd命令可以杀掉任何一
个系统进程。

从Windows 2000开始,微软就提供了ntsd工具,该命令执行后,可让你获得
系统的debug权,因此能够用来关闭大部分的系统进程,如果你遇到无法关闭的进程,就可
以使用该命令,其杀进程的命令格式为:ntsd -c q –p XXX
以上XXX为欲杀进程的PID;
ntsd –p XXX 表示在调试器中打开某进程(PID为XXX);
而-c q参数则表示退出调试器。

由于调试器关闭之后,它打开的进程会随调试器一起
退出,因此ntsd命令能够关闭进程。

出处:中关村在线作者:佚名
中毒死机巧用Svchost.exe应用进程查病毒
作者:陈实出处:《中国电脑教育报》发布时间:2005.06.22 01:06:07
【ezIT学院】一天,同学急急忙忙找到我说他的电脑不能用了,让我去看看。

笔者记得他的机器刚攒没多久,难道是被商家骗了!我随即询问他,电脑到底出了什么问题?同学简单表述了故障现象:在没有操作电脑的情况下,CPU资源占用率100%,硬盘指示灯不连续的闪亮。

哦!看来是中毒了,于是我拿着瑞星杀毒软件随他直奔宿舍。

启动电脑,现象依旧,笔者打开“任务管理器”,在“进程”选项内看到六个Svchost.exe进程同时存在且占用很大的内存容量,这似乎很不正常!因为Svchost.exe是一个系统的核心进程,所以病毒也会千方百计的入侵Svchost.exe!
有了思路,问题就迎刃而解了。

在“资源管理器”中以“Svchost.exe”为关键字进行搜索,结果显示在“C:\Documents and Settings\用户名
\LocalSettings\T emp”和“C:\Windows\System32”目录下发现Svchost.exe。

这就进一步证实了笔者的猜测,因为正常情况下“Svchost.exe”只在
“C:\Windows\System32”目录下。

安装瑞星杀毒软件,运行后不久就有警报提示说有病毒,杀毒结束后,电脑又恢复了往日的活力。

其实查看Svchost.exe进程是否中毒还有很多种方法。

如微软为我们提供的查看正在运行在Svchost.exe列表中的服务的方法,在“运行”对话框中输入“cmd”命令,然后在命令行模式中输入“tasklist /svc”命令,系统会自动列出服务列表,你也就可以轻松判断是否中毒了。

在去年的这个时候“冲击波”病毒横行的时候有一种说法就是Svchost.exe都是病毒,一看到就要删除。

这种说法让电脑用户人心惶惶,因为每个使用Windows XP系统的用户在按照文章中介绍的检查有无Svchost.exe的方法都可以找到几个Svchost.exe进程。

真的是像网络上流传的那样Svchost.exe是病毒吗?
我们先看看微软是怎样描述Svchost.exe的。

在微软知识库314056中对Svchost.exe有如下描述:Svchost.exe 是从动态链接库(DLL) 中运行的服务的通用主机进程名称。

其实Svchost.exe是Windows XP系统的一个核心进程。

Svchost.exe不单单只出现在Windows XP中,在使用NT内核的Windows系统中都会有Svchost.exe的存在。

一般在Windows 2000中Svchost.exe进程的数目为2个,而在Windows XP中Svchost.exe进程的数目就上升到了4个及4个以上。

所以看到系统的进程列表中有几个Svchost.exe不用那么担心。

Svchost.exe到底是做什么用的呢?
首先我们要了解一点那就是Windows系统的中的进程分为:独立进程和共享进程这两种。

由于Windows系统中的服务越来越多,为了节约有限的系统资源微软把很多的系统服务做成了共享模式。

那Svchost.exe在这中间是担任怎样一个角色呢?
Svchost.exe的工作就是作为这些服务的宿主,即由Svchost.exe来启动这些服务。

Svchost.exe只是负责为这些服务提供启动的条件,其自身并不能实现任何服务的功能,也不能为用户提供任何服务。

Svchost.exe通过为这些系统服务调用动态链接库(DLL)的方式来启动系统服务。

那Svchost.exe是病毒这种说法是任何产生的呢?
因为Svchost.exe可以作为服务的宿主来启动服务,所以病毒、木马的编写者也挖空心思的要利用Svchost.exe的这个特性来迷惑用户达到入侵、破坏计算机的目的。

如何才能辨别哪些是正常的Svchost.exe进程,而哪些是病毒进程呢?
Svchost.exe的键值是在“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
NT\CurrentVersion\Svchost”,如图1所示。

图1中每个键值表示一个独立的Svchost.exe组。

图1
微软还为我们提供了一种察看系统正在运行在Svchost.exe列表中的服务的方法。

以Windows XP为例:在“运行”中输入:cmd,然后在命令行模式中输入:tasklist /svc。

系统列出如图2
所示的服务列表。

图2中红框包围起来的区域就是Svchost.exe启动的服务列表。

如果使用的是Windows 2000系统则把前面的“tasklist /svc”命令替换为:“tlist -s”即可。

图2
如果你怀疑计算机有可能被病毒感染,Svchost.exe的服务出现异常的话通过搜索Svchost.exe文件就可以发现异常情况。

一般只会找到一个在:“C:\Windows\System32”目录下的Svchost.exe程序。

如果你在其他目录下发现Svchost.exe程序的话,那很可能就是中毒了。

还有一种确认Svchost.exe是否中毒的方法是在任务管理器中察看进程的执行路径。

但是由于在Windows系统自带的任务管理器不能察看进程路径,所以要使用第三方的进程察看工具。

上面简单的介绍了Svchost.exe进程的相关情况。

总而言之,Svchost.exe是一个系统的核心进程,并不是病毒进程。

但由于Svchost.exe进程的特殊性,所以病毒也会千方百计的入侵Svchost.exe。

通过察看Svchost.exe进程的执行路径可以确认是否中毒。

相关文档
最新文档