2007-05-11

開完機變很慢 -> svchost.exe 在搞鬼

每個人都有類似的經驗,就是電腦剛買或重灌完還蠻快的,但用了一段時間,好像越來越慢,雖然說重灌治百病,但是很多軟體也要重裝、資料還要備份其實還蠻累的。電腦用久變慢是一定的,但導致變慢的原因實在很多,而且還會因人而異,所以不可能有無敵大絕招改善類似的狀況,也不會有通用的辦法解決所有的問題。不過一般而言,電腦用久了會變慢大多是因為曾經安裝過什麼軟體反安裝後會留下渣渣、上網下載或被植入有的沒的(包括軟體、木馬和病毒),這類症狀都可以透過防毒或防廣告軟體、或之前王姓友人推薦給我的一些免費工具花時間掃瞄減輕病情(個人使用免費:Ad-Aware SE PersonalSpybot - Search & Destroy),更進階一點的也可以手動用 regedit 來「治病」。不過我最怕的不是這類「外來」的威脅,而是那些「內在」的隱憂,這些內在隱憂是來自 M$ Windows 設計上的問題,你怎麼掃毒、防廣告都沒有用,最後真的只有重灌一途。

除了停掉一些不必要的系統內建服務外,其實網路上還有很多什麼加速「調校」的密技,其實我也很懶得用。不過某天開始我浩鑫的準系統不定期開機完會變得很慢,甚至慢到桌面、系統列不時會 hang 住不能用的狀況,這樣問題就很嚴重了。我用盡了一切的方法(掃毒、掃廣告...就差沒重灌了),還是不能解決這個問題,還好也不是每次開機完都會這樣,反覆重開機有時候就正常,所以就忍氣吞聲用了好一陣子。我觀察發病時的症狀是在工作管理員裡有一隻 svchost.exe 佔用了大部分系統資源,也不知道它在幹嘛,如果我把這個程序砍掉系統就正常了,但是音效卡、網路部分服務就可能會不能用(因為 svchost 是系統的一個程序,有些會掌管系統的週邊服務),後來搜尋並拜讀了 Jas9這篇文章,也下載了微軟自己的進階程序監控程式:Process Explorer,發現我的症狀和 Jas9 說的一模一樣,原來是 Windows Update 搞的鬼(該服務會綁在 svchost.exe 上面,而且,只要微軟發佈更新、Windows Update 跑起來才會變慢,難怪症狀是不定期發作)!但是為了 Windows 好,Automatic Updates 的服務又不能整個關掉,那該怎麼辦呢?還好 Jas9 文章裡有提到解決辦法,而我的電腦服用後狀況也解除了(至少解決至今一段時間,都沒有發作過),所以這裡也再筆記整理一次,分享給同樣為此所苦的朋友。(並不是每個人電腦都會有一樣的症狀,開機完變慢的時候可以用 Process Explorer 檢查一下,如果是此症狀再服用下面的解藥,以下步驟完全引用參考 Jas9 的文章

步驟一:檢查本機服務
打開並檢查本機的服務(開始->執行->services.msc),檢查 Automatic Updates 和 Background Intelligent Transfer Service (BITS) 這兩個服務,右鍵->內容並切換到登入的分頁標籤,確認目前登入身分為「本機系統帳戶」,而且底下的「允許服務與桌面互動」是不勾選的狀態,最後再確認這兩項服務已被啟用。

步驟二:修復 Windwos Update 執行元件
打開一個 DOS 視窗(開始->執行->cmd),然後貼下以下的命令依序執行:
REGSVR32 WUAPI.DLL
REGSVR32 WUAUENG.DLL
REGSVR32 WUAUENG1.DLL
REGSVR32 ATL.DLL
REGSVR32 WUCLTUI.DLL
REGSVR32 WUPS.DLL
REGSVR32 WUPS2.DLL
REGSVR32 WUWEB.DLL
這個動作是重新註冊 Windwos Update 會用到的 DLL 元件,成功的話會跳出一堆註冊成功的小視窗,一個個按確定關掉就好了。

步驟三:清除舊有 Windows Update 暫存目錄
這個步驟最關鍵,因為會慢應該是系統在比對更新狀況,比對的方法一定是和以前更新過的所有暫存記錄逐項來做,這些檔案不見了的話可能就只會比對登錄表(只要以前有正常更新,這樣應該就夠了),檢查到當掉的情況也可以馬上改善。所以先暫時停掉 Windows Update 的服務(以下命令在剛剛還沒關掉的 DOS 視窗執行):
net stop WuAuServ
然後切換目錄到 Windows 目錄,直接把這個暫存目錄 (SoftwareDistribution) 改名字(以下範例是改成 SDBackup,如果有勇氣,整個殺掉也可以,還可以省不少空間,改名字是為了備份,出了包可以還原):
cd %windir%
rename SoftwareDistribution SDBackup
改完暫存目錄別忘了重新啟動 Windows Update 的服務:
net start WuAuServ

大功告成!至少我的浩鑫準系統服用後乖乖地再也不會不聽話了。這兩天我老板似乎也碰到了類似的狀況(因為這兩天又有 Windows Update 的更新),狀況相同,svchost.exe 狂跑、系統恢復正常的那一刻系統跳出的提示是「Windows Update 有更新」、要你去下載和安裝,如果有碰到類似的狀況,或是電腦灌完使用了一陣子、你又都乖乖地有在做更新,可以試試看這個禁斷的密技,看能不能改善電腦開機完會超慢甚至當掉的狀況。(至少對我很受用,解決我一段時間以來的困擾啦!感恩,感恩~)

參考文章:
Jas9實作解決svchost狂吃CPU資源

回應: 18

匿名 提到...

我也有這方面的困擾
現在終於解決了
這篇文章真受用
感激不盡

匿名 提到...

svchost.exe常佔據系統資源 按照上面執行 應該能解決問題了吧 我還要試試ㄋ 感激版主~

匿名 提到...

老是看到svchost.exe這個麻煩!
試試看囉!先說聲謝嘞!

匿名 提到...

= = 大大我借用一下你的文章貼在我的網誌上喔...
如果不行告知我 我在刪除~"~

匿名 提到...

感謝大大><
再來會不會出錯就看電腦孩子的造化拉~

不過剛剛在我的電腦裡的System32資料夾
裡面也發現一個SoftwareDistribution
有點遲疑了一下= ="

匿名 提到...

照大大的方法感覺系統有跑比較快了,感謝!

匿名 提到...

大大:
求救!按您的方法後有比較快但無法更新ㄟ

匿名 提到...

這是適合xp 還是vista阿 我是用vista的 弄到一半就沒法成功說ˊˋ

Abin 提到...

當然是適用於 XP,我不用 Vista 的。

匿名 提到...

您好:請問當我執行net stop WuAuServ後出現以下訊息:
尚未啟動 Automatic Updates 服務。詳細資料,請輸入 NET HELPMSG 3521。
這應該怎麼辦呢?另在net stop WuAuServ之後你寫到:然後切換目錄到 Windows 目錄
請問該目錄是在那裡呢?....請包含我這個電腦白白~~感激無限^^~

Abin 提到...

首先,本文是解決因「自動更新」導致電腦變慢的問題,如果你根本沒啟動自動更新的服務,本文對你來說是沒有參考作用的。(控制臺->自動更新,看裡面服務到底有沒有啟動)
Windows 目錄,在 XP 通常就是 C:\Windows,如果你灌作業系統到 D:,那就是在 D:\Windows。

匿名 提到...

請問大大 如果是用盜版xp
用了此方法以後 就能夠好好的自動更新不跑出盜版xp嗎

Abin 提到...

盜版 xp 是會讓自動更新不會動作的。這個動作只是避免 svchost 影響電腦開機速度,和盜版檢查沒有關係。想用自動更新,還是用正版吧~

陳泉元 提到...

致版大

借引用文章至敝人部落格~http://tw.myblog.yahoo.com/risk1257/article?mid=834

若不許引用文章

請通知敝人刪除

陳泉元

路人甲 提到...

厄~ 請問一下
如果 我再更改時 把WINDOW/SYSTEM32/的SoftwareDistribution
也改成 SDBackup
結果 跑出 一大堆的檔案 和資料夾
那我應該怎麼半@@ 如何修補 還是說 沒有關係勒?

匿名 提到...

太感動了,終於回復正常!!

Unknown 提到...

超厲害的!!!!!!!!!感謝你~~~~~~~~~

匿名 提到...

複製貼上那段怎麼都不成功

張貼留言

歡迎隨便亂哈啦留言或發表意見,不過要理性不做人身攻擊~匿名的朋友得到回應的速度會比較慢喔~
請注意發問相關的禮貌和規矩,不當留言、和本文無關的回應可能會被直接刪除無視喔!