2010年7月20日 星期二

實作解決 svchost狂吃CPU資源 (轉貼

我的家用筆電是七八年前買的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就沒再出來亂了,果然是欠修理。

=================================================

轉貼自http://jas9.blogspot.com/2007/04/svchostcpu.html