我的家用筆電是七八年前買的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
- 依序選取左下的「開始」->「執行」,輸入「services.msc」並按「確定」。(這個步驟主要是叫出服務視窗)
- 找到「Automatic Updates」這項服務,連點二下滑鼠左鍵開啟內容設定。
- 點選「登入」這個頁籤,先確認目前登入身分為「本機系統帳戶(L)」,而且不勾選底下的「允許服務與桌面互動(W)」。接著再確認「Automatic Updates」這項服務已在目前的「硬體設定檔」中被啟用,若未啟用,則按下「啟用」鍵。
(2)Background Intelligent Transfer Service (BITS)
- 在相同服務視窗找到「Background Intelligent Transfer Service」這項服務,連點二下滑鼠左鍵開啟內容設定。
- 點選「登入」這個頁籤,先確認目前登入身分為「本機系統帳戶(L)」,而且不勾選底下的「允許服務與桌面互動(W)」。接著再確認「Background Intelligent Transfer Service」這項服務已在目前的「硬體設定檔」中被啟用,若未啟用,則按下「啟用」鍵。
(二)修復 Windwos Update 執行元件。
- 依序選取左下的「開始」->「執行」,輸入「REGSVR32 WUAPI.DLL」並按「確定」。接著視窗會跳出「DllRegisterServer 在 WUAPI.DLL 成功」的訊息,按「確定」完成動作並關閉視窗。接著,依照上述步驟逐一執行以下Windwos Update 元件:
- REGSVR32 WUAUENG.DLL
- REGSVR32 WUAUENG1.DLL
- REGSVR32 ATL.DLL
- REGSVR32 WUCLTUI.DLL
- REGSVR32 WUPS.DLL
- REGSVR32 WUPS2.DLL
- REGSVR32 WUWEB.DLL
(三)清除舊有 Windows Update 暫存目錄。
- 依序選取左下的「開始」->「執行」,輸入「cmd」並按「確定」以開啟命令提示視窗。
- 在命令提示視窗裡的命令提示字元右方輸入指令「net stop WuAuServ」暫停Automatic Updates服務。
- 依序選取左下的「開始」->「執行」,輸入「%windir%」並按「確定」以開啟系統資料夾。
- 在系統資料夾裡找到「SoftwareDistribution」這個目錄,並且把它更名為「SDbak」。
- 依序選取左下的「開始」->「執行」,輸入「cmd」並按「確定」以開啟命令提示視窗。
- 在命令提示視窗裡的命令提示字元右方輸入指令「net start WuAuServ」重新啟動Automatic Updates服務。
這樣整過一次骨之後,svchost.exe就沒再出來亂了,果然是欠修理。
Tags:
執行前svchost 有八個執行完成後還是八個。沒有比較真的不懂。
第一個,把System *** Distribution資料夾的名字改成別的名字應該沒差吧。
第二個,吃我的電腦的CPU最多的常常是system idle process,不是svchost(idle就idle,吃什麼CPU啊!!),不知道有沒有解法。
謝謝。
希望能解決你的問題
咖啡隨想:
文章裡應該沒有提到”不再干擾”,
所以不知道怎麼回答定義的問題。
這篇文章提出一個我自己遇到的svchost狂吃CPU資源的問題,
這個問題跟svchost執行程序的個數無關,
svchost本來就會同時開啟多個執行程序,
但正常情況下不會狂吃CPU資源(70~100%)
所以,如果你的svchost沒有像我遇到的情況那樣在幕後偷跑自動更新而造成浪費資源的迴圈,那你的電腦作業系統環境應該是很正常而不需要擔心
mountaineer:
1. 對,可以改成任何你可以辨識的命名,主要是為求保險留個備份,其實刪得掉的話,直接刪掉也無妨。
2. CPU資源顯示的百分比是指配置狀能,system idle佔到百分之九十幾其實也就是閒置,並沒有吃資源也不需要作任何調整。
BTW, 不知道這是不是你的原創文章呢?因為我後來發現這一網址http://forums.microsoft.com/WindowsOneCare/ShowPost.aspx?PostID=906329&SiteID=2
這只是一篇問題解決的實作記錄,
我也只是把我遇到的問題、找到的解決方法以及最後實作成功解決的步驟跟程序整理出來而已,
要說感謝的話,應該要感謝整個廣大網路不分國籍慷慨願於分享的眾生大德吧。
2. 這裡提供的解法是針對windows 自動 update所衍生的資源空轉,所以,如果這樣優化過後還是一樣,乾脆把windows update改為手動。
此流程會否影響無法做WINDOWS UPDATE影響後續重要的更新?
感恩~~
執行完後仍舊看到svchost.exe數目未變少,如何確定已成功?
執行後重新開機發現電腦先執行類似掃描一些程式的%是否oK的畫面且時間蠻久才到windows的畫面,是否正常?
感恩~~
avp應該是卡巴斯基造成的問題才對。
RYAN:
我想,應該是每一個步驟都要確實執行才會有效,如果卡到某個步驟不能執行,那就表示問題是出在這個步驟,應該是去解決這個步驟發現的問題才對。
至於怎麼解決,
1. 如果始終查不出問題就找人維修
2. 如果是程式損毀就重新安裝
至於你提到網路上有人說只要從控制台關掉自動更新就可以解決,我相信某些正常的情況是這樣,但那顯然不在這篇解決方案的前提範圍內,如果能直接從控制台關掉這個服務,當然就不需要這麼多步驟來解決了。
建議遇到SVCHOST問題的朋友,不妨先作一些問題排除,簡易解法無法解決的再依照本篇的作法試看看。
REGSVR32 WUAUENG.DLL...請問要怎麼辦ㄋ
我也轉載一下讓大家知道
http://forum.flash2u.com.tw/
就打開工作管理員, 最左下角的"顯示來自所使用者的處理程序"打勾, 再切到"處理程序"頁面, 點一下"使用者"依使用者來排序...
如此就可以看出..那些是你自己在執行的程式了, 一般來講, svchost.exe等系統的執行身份都是 system、local service或network service, 絕不可能是你自己帳號的身份, 那就一定是病毒了...
其它判別的方式, 有些是個人經驗..看多了就知道了....
可是我這次重新照順序跑一遍
發現SDbak還在
而且尚有SoftwareDistribution
這個資料夾
請問該如何處理呢?
THX!!
我按照您的步驟完成了
可是我的CPU使用率依然是100%耶
而且我的svchost.exe總共有6個在跑
3個是system service
2個network service
1個local service
請問是要重新開機嗎?
還是說有哪個是可以直接結束處理程序的?
謝謝你了
按照步驟後..的確svchost.exe 就沒再出來佔掉CPU~
這篇文章解決我的困擾,受益良多~感謝版主分享^^
這個問題害得我電腦老是"累格"...
希望用後可以解決.TKS
問題解決了!
而導致要重開好幾次機才能上網
這樣做也可以嘛???
我看過很多website講到這問題的solution.
但當我入了執行,enter了那個key word後,找不到automatic update這字.
我見到有"服務(本機)",但卻做不到click 2下之後的事情...
應怎麼辦???
試看看有沒有「自動更新」,
這兩個東西是一樣的。
順便分享一下自己改的小批次檔寫法~
-------------------------------
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」這項服務..
不過我的服務裡竟然找不到這樣東西耶
那是什麼情況會這樣呢~?
接下來我該怎麼用~?
謝謝
不過,因為執行services.msc這個步驟的目的主要是叫出服務視窗,所以,你可以在桌面「我的電腦」圖示點選右鍵選取「管理」,在「服務及應用程式」這個選項下找到「服務」視窗。
再不然,就直接在桌面按F2搜尋「服務」,反正只要能把服務叫出來就可以了。
這是轉貼到的地方
http://www.facebook.com/Lyaoyao#!/group.php?gid=130886896928117&ref=mf
困擾我好久了呢!!
感激。
感謝!!!