我的家用筆電是七八年前買的Compaq,Intell P4-1G的CPU上跑的是Win2K的老舊系統,然而,使用起來的感覺,卻經常比目前公司使用的Intell P4-2.8G CPU + XP快且順暢得多。

由於公司電腦使用單純,幾乎可確定沒有中毒或被駭的可能,然而為求慎重起見,還是仔細檢查了一下。一開始發現是svchost.exe在作祟,正常開機操作使用情況下,開機後每隔一小段時間就跳出來狂吃CPU資源,風扇聲大作而執行中的應用軟體則龜速進展。每次svchost發作,吃個70%~80%是很稀鬆平常的事,有時過份起來甚至可以吃到97%以上,甚至滿百,幾乎是瀕臨當機無法做正事。

由於XP內建的工作管理員所提供的效能資訊極有限,所以到微軟官網下載了Process Explorer for Windows v10.21來檢查svchost.exe到底都在忙什麼。下載解壓並執行Process Explorer之後,視窗上可一目瞭然發現原來是Windwos Update讓它忙得不可開交,每隔一段時間就Automatic Updates來狂吃CPU資源。

這種現象當然不是XP正常運作時會出現的,所以需要動點手腳幫已經後天失調的相關設定重新調校一下,步驟分為三大項整理如下:

(一)確認兩項系統服務。

(1)Automatic Updates

  1. 依序選取左下的「開始」->「執行」,輸入「services.msc」並按「確定」。(這個步驟主要是叫出服務視窗)
  2. 找到「Automatic Updates」這項服務,連點二下滑鼠左鍵開啟內容設定。
  3. 點選「登入」這個頁籤,先確認目前登入身分為「本機系統帳戶(L)」,而且不勾選底下的「允許服務與桌面互動(W)」。接著再確認「Automatic Updates」這項服務已在目前的「硬體設定檔」中被啟用,若未啟用,則按下「啟用」鍵。

(2)Background Intelligent Transfer Service (BITS)

  1. 在相同服務視窗找到「Background Intelligent Transfer Service」這項服務,連點二下滑鼠左鍵開啟內容設定。
  2. 點選「登入」這個頁籤,先確認目前登入身分為「本機系統帳戶(L)」,而且不勾選底下的「允許服務與桌面互動(W)」。接著再確認「Background Intelligent Transfer Service」這項服務已在目前的「硬體設定檔」中被啟用,若未啟用,則按下「啟用」鍵。

(二)修復 Windwos Update 執行元件。

  1. 依序選取左下的「開始」->「執行」,輸入「REGSVR32 WUAPI.DLL」並按「確定」。接著視窗會跳出「DllRegisterServer 在 WUAPI.DLL 成功」的訊息,按「確定」完成動作並關閉視窗。接著,依照上述步驟逐一執行以下Windwos Update 元件:
  2. REGSVR32 WUAUENG.DLL
  3. REGSVR32 WUAUENG1.DLL
  4. REGSVR32 ATL.DLL
  5. REGSVR32 WUCLTUI.DLL
  6. REGSVR32 WUPS.DLL
  7. REGSVR32 WUPS2.DLL
  8. REGSVR32 WUWEB.DLL

(三)清除舊有 Windows Update 暫存目錄。

  1. 依序選取左下的「開始」->「執行」,輸入「cmd」並按「確定」以開啟命令提示視窗。
  2. 在命令提示視窗裡的命令提示字元右方輸入指令「net stop WuAuServ」暫停Automatic Updates服務。
  3. 依序選取左下的「開始」->「執行」,輸入「%windir%」並按「確定」以開啟系統資料夾。
  4. 在系統資料夾裡找到「SoftwareDistribution」這個目錄,並且把它更名為「SDbak」。
  5. 依序選取左下的「開始」->「執行」,輸入「cmd」並按「確定」以開啟命令提示視窗。
  6. 在命令提示視窗裡的命令提示字元右方輸入指令「net start WuAuServ」重新啟動Automatic Updates服務。

這樣整過一次骨之後,svchost.exe就沒再出來亂了,果然是欠修理。

technorati tag

53 留言

Chou HsinYi寫道…
困擾好久,看到馬上過來試試看
咖啡隨想寫道…
請問一下,您所謂不再干擾的定義是甚麼?
執行前svchost 有八個執行完成後還是八個。沒有比較真的不懂。
ifan寫道…
那鍋,我有兩個問題。
第一個,把System *** Distribution資料夾的名字改成別的名字應該沒差吧。
第二個,吃我的電腦的CPU最多的常常是system idle process,不是svchost(idle就idle,吃什麼CPU啊!!),不知道有沒有解法。
謝謝。
Jas寫道…
Weihsi:

希望能解決你的問題

咖啡隨想:
文章裡應該沒有提到”不再干擾”,
所以不知道怎麼回答定義的問題。
這篇文章提出一個我自己遇到的svchost狂吃CPU資源的問題,
這個問題跟svchost執行程序的個數無關,
svchost本來就會同時開啟多個執行程序,
但正常情況下不會狂吃CPU資源(70~100%)
所以,如果你的svchost沒有像我遇到的情況那樣在幕後偷跑自動更新而造成浪費資源的迴圈,那你的電腦作業系統環境應該是很正常而不需要擔心

mountaineer:

1. 對,可以改成任何你可以辨識的命名,主要是為求保險留個備份,其實刪得掉的話,直接刪掉也無妨。
2. CPU資源顯示的百分比是指配置狀能,system idle佔到百分之九十幾其實也就是閒置,並沒有吃資源也不需要作任何調整。
LiyaKo寫道…
作者已經移除這則留言。
匿名表示…
這真是解決了我的難題,所以就放一下我的blog,也比較好找,但我再引用你的文章時,發現你這的引用好像都沒有我的內容,為了怕你沒收到,就在這跟你報告一下,辛苦囉!!!^^
匿名表示…
從黑米中看到這篇文章,終於解決了我一直困擾的問題!謝謝囉:)

BTW, 不知道這是不是你的原創文章呢?因為我後來發現這一網址http://forums.microsoft.com/WindowsOneCare/ShowPost.aspx?PostID=906329&SiteID=2
Jas寫道…
這當然不是原創的文章,
這只是一篇問題解決的實作記錄,
我也只是把我遇到的問題、找到的解決方法以及最後實作成功解決的步驟跟程序整理出來而已,
要說感謝的話,應該要感謝整個廣大網路不分國籍慷慨願於分享的眾生大德吧。
jasper-hsia寫道…
請問,我做了還是無效,請問要怎麼辦?
Jas寫道…
1. 先確定有沒有中毒或被駭
2. 這裡提供的解法是針對windows 自動 update所衍生的資源空轉,所以,如果這樣優化過後還是一樣,乾脆把windows update改為手動。
匿名表示…
感謝,現在馬上去試試。
寫道…
感謝你,這問題浪費了我一個多小時時間
匿名表示…
謝謝!呼~為這問題~讓我重開機到哭了~呼~
ccc寫道…
謝謝您,我是灌了 office 2003 後又用microsoft update 後就有這個問題出現了,您真的幫了我很大的忙.
Unknown寫道…
請問avp一直吃CPU要怎解決~拜託幫我
RYAN寫道…
您好,請問如果"net stop WuAuServ暫停Automatic Updates服務"此一步驟無法成功,但其他步驟OK,會否影響而無法成功?
此流程會否影響無法做WINDOWS UPDATE影響後續重要的更新?
感恩~~
RYAN寫道…
網路上有另方式不知是否有效:控制台-系統管理工具-服務-AUTOMATIC UPDATE改為停用-需要時再啟用,請指點迷津?
執行完後仍舊看到svchost.exe數目未變少,如何確定已成功?
執行後重新開機發現電腦先執行類似掃描一些程式的%是否oK的畫面且時間蠻久才到windows的畫面,是否正常?
感恩~~
Jas寫道…
婷方:
avp應該是卡巴斯基造成的問題才對。

RYAN:
我想,應該是每一個步驟都要確實執行才會有效,如果卡到某個步驟不能執行,那就表示問題是出在這個步驟,應該是去解決這個步驟發現的問題才對。
至於怎麼解決,
1. 如果始終查不出問題就找人維修
2. 如果是程式損毀就重新安裝

至於你提到網路上有人說只要從控制台關掉自動更新就可以解決,我相信某些正常的情況是這樣,但那顯然不在這篇解決方案的前提範圍內,如果能直接從控制台關掉這個服務,當然就不需要這麼多步驟來解決了。

建議遇到SVCHOST問題的朋友,不妨先作一些問題排除,簡易解法無法解決的再依照本篇的作法試看看。
匿名表示…
不好意思..我在這個步驟就失敗了...
REGSVR32 WUAUENG.DLL...請問要怎麼辦ㄋ
Unknown寫道…
不錯的內容
我也轉載一下讓大家知道
http://forum.flash2u.com.tw/
匿名表示…
給大家一個簡單判別是否為病毒在執行的程序....這是指大部份, 不是所有都如此喔..
就打開工作管理員, 最左下角的"顯示來自所使用者的處理程序"打勾, 再切到"處理程序"頁面, 點一下"使用者"依使用者來排序...
如此就可以看出..那些是你自己在執行的程式了, 一般來講, svchost.exe等系統的執行身份都是 system、local service或network service, 絕不可能是你自己帳號的身份, 那就一定是病毒了...

其它判別的方式, 有些是個人經驗..看多了就知道了....
匿名表示…
謝謝您熱心的分享︿︿
匿名表示…
超好用~ 借轉~
匿名表示…
真是厲害電腦還真是博大精深
匿名表示…
我之前似乎有改過SDbak
可是我這次重新照順序跑一遍
發現SDbak還在
而且尚有SoftwareDistribution
這個資料夾
請問該如何處理呢?
THX!!
匿名表示…
你好
我按照您的步驟完成了
可是我的CPU使用率依然是100%耶
而且我的svchost.exe總共有6個在跑
3個是system service
2個network service
1個local service
請問是要重新開機嗎?
還是說有哪個是可以直接結束處理程序的?
謝謝你了
匿名表示…
原本公司電腦以為是中毒有木馬佔掉CPU,一度還以為是防毒程式佔掉...

按照步驟後..的確svchost.exe 就沒再出來佔掉CPU~

這篇文章解決我的困擾,受益良多~感謝版主分享^^
匿名表示…
謝謝分享,大大電腦真是強啊!!
這個問題害得我電腦老是"累格"...
希望用後可以解決.TKS
Peter寫道…
感恩.
問題解決了!
匿名表示…
請問我是因為svchost
而導致要重開好幾次機才能上網
這樣做也可以嘛???
匿名表示…
hello~
我看過很多website講到這問題的solution.
但當我入了執行,enter了那個key word後,找不到automatic update這字.
我見到有"服務(本機)",但卻做不到click 2下之後的事情...
應怎麼辦???
Jas寫道…
如果找不到「automatic update」,
試看看有沒有「自動更新」,
這兩個東西是一樣的。
匿名表示…
你好, 我找到「SoftwareDistribution」這個目錄,並且把它更名為「SDbak」。 但在做check 時, 發現「SoftwareDistribution」這個目錄依然存在, 而且「SDbak」也存在, 這應該是我改名了另一個檔案去了,我應怎麼辦? (不記得改的黨的原名了)
匿名表示…
已解決,感謝!
匿名表示…
推阿! 解決掉這個障礙 我的古董P3 733Mhz電腦終於可以在XP下跑的順順順
ensoulgun寫道…
想請問一下說,我把SoftwareDistribution這個目錄,更名為SDbak之後,會不會造成日後更新異常,也在想說他的功用,如果是暫存資料夾,會不會在更新時,他就又會產生一個新的出來,只是想到這個問題有點擔心~

順便分享一下自己改的小批次檔寫法~
-------------------------------
CLS
@ECHO OFF
COLOR 0E
ECHO.
ECHO ----------------------------------------------------------------
ECHO 處理中.....
ECHO ----------------------------------------------------------------
REGSVR32 WUAPI.DLL /s
REGSVR32 WUAUENG.DLL /s
REGSVR32 WUAUENG1.DLL /s
REGSVR32 ATL.DLL /s
REGSVR32 WUCLTUI.DLL /s
REGSVR32 WUPS.DLL /s
REGSVR32 WUPS2.DLL /s
REGSVR32 WUWEB.DLL /s
ECHO.

net stop WuAuServ
cd c:\windows
ren SoftwareDistribution SDbak
net start WuAuServ

ECHO ----------------------------------------------------------------
ECHO 完成 !!!
ECHO ----------------------------------------------------------------
ECHO.
pause

直接將以上的東西貼到記事本上,存成XXX.BAT就行了,點完後就會將第二步驟之後的一次完成~前面的第一步驟就還是自己要點一下囉
匿名表示…
感謝大大分享~~!! 困擾挺久的= =!!
匿名表示…
不好意思 我有個問題想請問
我已經完成以下這個步驟了
【依序選取左下的「開始」->「執行」,輸入「services.msc」並按「確定」。(這個步驟主要是叫出服務視窗)】

然後根據你的教學要找出「Automatic Updates」這項服務..
不過我的服務裡竟然找不到這樣東西耶
那是什麼情況會這樣呢~?
接下來我該怎麼用~?
謝謝
匿名表示…
不好意思 我有個問題想請問
我已經完成以下這個步驟了
【依序選取左下的「開始」->「執行」,輸入「services.msc」並按「確定」。(這個步驟主要是叫出服務視窗)】

然後根據你的教學要找出「Automatic Updates」這項服務..
不過我的服務裡竟然找不到這樣東西耶
那是什麼情況會這樣呢~?
接下來我該怎麼用~?
謝謝
Jas寫道…
這篇文章主要是以Win XP home editon為範本,如果你的作業系統是其他版本就沒辦法完全適用。
不過,因為執行services.msc這個步驟的目的主要是叫出服務視窗,所以,你可以在桌面「我的電腦」圖示點選右鍵選取「管理」,在「服務及應用程式」這個選項下找到「服務」視窗。
再不然,就直接在桌面按F2搜尋「服務」,反正只要能把服務叫出來就可以了。
yu8128表示…
多謝分享,另外告知此篇文章引用。謝謝。
Unknown寫道…
請問一下喔~ 我依序做到第二步驟之前都沒有問題,也已經確認自動更新是被啟動的,可是當我輸入"net stop WuAuServ",遽然顯示"尚未啟動Automatic updates 服務"......請問大大 我該如何是好勒? = = 謝謝
Unknown寫道…
借轉貼唷~如不喜歡請馬上通知我我馬上移除~
Unknown寫道…
對了S062949是我的HOTMAIL~請寄到這邊通知我~
這是轉貼到的地方
http://www.facebook.com/Lyaoyao#!/group.php?gid=130886896928117&ref=mf
Unknown寫道…
真的很感謝你的幫忙!!
困擾我好久了呢!!
感激。
匿名表示…
ok la...many thanks
Unknown寫道…
謝謝,我的大PC也有這問題,今天終於解決了,感恩,再拜。
Unknown寫道…
謝謝,我大PC就有這可怕的問題,今天終於一解心腹大患,感恩,真的很感恩。
Unknown寫道…
那個啥,這作法不就是完全的阻止了電腦自動更新嗎..
Unknown寫道…
困擾我兩周終於解決了
感謝!!!
sinming寫道…
感謝分享!! 希望以後電腦可以跑得順一點~~
較新的 較舊