cpu使用率100%及風扇高速嘈雜運轉的快速解決方案B

我將自己碰到的情形及google後的有效解決方法稍做整理,以便將來碰到相同情形能更直覺性的操作,由於每個人的使用習慣不同,其他因素---中毒,硬體,環境等.....就不屬於這篇的研究範圍了
[狀況]:
1.電腦變慢,玩遊戲時會lag(以前同樣的遊戲沒有此情形)
2.風扇異常高速嘈雜
3.檢查cpu使用率100%

[可能原因]:
1.中毒--掃毒過後沒有問題--使用Avast!(好用又不囉唆)
2.風扇過髒過熱,(如果卡榫沒接好或斷掉其中一角會直接過熱跳電)--清理過OK,通風良好!
3.打開Windows工作管理員(Ctrl+Alt+Delete),會發現spoolsv.exe程式,而且CPU佔用率很高
4.看見存在許多svchost處理程序..

[svchost處理方式]: 再來解決很礙眼的svchost....
一些朋友對Windows工作管理員中的svchost處理程序不甚瞭解,看見存在許多svchost處理程序就以為自己中了病毒,其實不然...
svchost.exe 吃掉所有 CPU 資源的原因很多,不過主要狀況都是在執行 Windows Update 時發生的(或是自動更新服務 Automatic Updates 執行時)。因此解決方法主要就是把 Windows 的自動更新重設一次or關掉服務(一勞永逸...)

Windows 的自動更新重設一次,步驟如下:
一、首先檢查系統服務的狀態。
1. 點「開始」–>「執行」,輸入「services.msc」後按「確定」。
2. 在服務「Automatic Updates」上點二下。
3. 點選「登入」頁籤,確定登入身分為「本機系統帳戶」且「允許服務與桌面互動」“沒有”被選取。
4. 確認服務已在目前的「硬體設定檔」中被啟用,如果沒有,按下「啟用」按鈕。
5. 點選「一般」頁籤,確定「啟動類型」為「自動」,然後按下「啟動」按鈕以啟動服務。
6. 對「Background Intelligent Transfer Service (BITS) 」服務重覆 2 ~ 5 的步驟。

二、接著重新註冊 Windows Update 的元件。
1. 點選「開始」–>「執行」。
2. 輸入「REGSVR32 WUAPI.DLL」後按 Enter。
3. 當看到 “DllRegisterServer 在 WUAPI.DLL 成功” 的訊息後按下「確定」。
4. 重覆上述步驟重新註冊下列元件
REGSVR32 WUAUENG.DLL
REGSVR32 WUAUENG1.DLL
REGSVR32 ATL.DLL
REGSVR32 WUCLTUI.DLL
REGSVR32 WUPS.DLL
REGSVR32 WUPS2.DLL
REGSVR32 WUWEB.DLL

三、最後清除可能已損壞了的 Windows Update 暫存目錄。
1. 點「開始」–>「執行」,輸入「cmd」後按「確定」。
2. 在命令提示字元中鍵入以下指令。(若出現錯誤訊息請先重開機後再報執行一次)
net stop WuAuServ
2. 點「開始」–>「執行」,輸入「%windir%」後按「確定」。
3. 找到「SoftwareDistribution」並更名為「SDold」。
4. 點「開始」–>「執行」,輸入「cmd」後按「確定」,並在在命令提示字元中鍵入以下指令。
net start WuAuServ
P.S.:也可在網路上找到"svchost.bat"的批次檔,自動執行以上步驟!!

[詳細解說]
svchost.exe是NT核心系統非常重要的文件,對於Win2000/XP來說,不可或缺。這些svchost處理序提供很多系統服務,如: rpcss服務(remote procedure call)、dmserver服務(logical disk manager)、dhcp服務(dhcp client)等等。
如果要瞭解每個svchost處理程序到底提供了多少系統服務,可以在WinXP的命令提示符窗口中輸入「tasklist /svc」命令來查看。

[工作原理]
一般來說,Windows系統處理序分為獨立處理序和共享處理序兩種。svchost.exe文件存在於%systemroot%\system32目錄下,屬於共享處理序。
隨著Windows系統服務不斷增多,為了節省系統資源,微軟把很多服務都做成共享方式,交由svchost處理序來啟動。但svchost處理序只作為服務宿主,並不能實現任何服務功能,即它只能提供條件讓其他服務在這裡被啟動,而它自己卻不能給用戶提供任何服務。
這些服務是如何實現的呢?原來這些系統服務是以動態連結庫(dll)形式實現的,它們把可執行程式指向svchost,由svchost調用相應服務的動態連結庫來啟動服務。
那svchost又怎麼知道某個系統服務該調用哪個動態連結庫呢?這是通過系統服務在註冊表中設置的參數來實現的。

[具體實例]
下面以Remote Registry服務為例,來看看svchost處理序是如何調用DLL文件的。在WinXP中,點擊「開始→執行」,輸入「services.msc」命令,會彈出服務對話框,然後打開「Remote Registry」屬性對話框,可以看到Remote Registry服務的可執行文件的路徑為「C:\Windows\System32\svchost -k LocalService」(圖1),這說明Remote Registry服務是依靠svchost調用「LocalService」參數來實現的,而參數的內容則是存放在系統註冊表中的。
在運行對話框中輸入「regedit.exe」後按 Enter,打開註冊表編輯器,找到「HKEY_LOCAL_MACHINE\System\ currentcontrolset\services\Remote Registry」項,再找到類型為「reg_expand_sz」的「Imagepath」項,其鍵值為「%systemroot%\system32 \svchost -k LocalService」(這就是在服務窗口中看到的服務啟動命令),另外在「parameters」子項中有個名為「ServiceDll」的鍵,其值為「% systemroot%\system32\regsvc.dll」,其中「regsvc.dll」就是Remote Registry服務要使用的動態連結庫文件。這樣svchost處理程序通過讀取「Remote Registry」服務註冊表訊息,就能啟動該服務了。
也正是因為svchost的重要性,所以病毒、木馬也想盡辦法來利用它,企圖利用它的特性來迷惑用戶,達到感染、入侵、破壞的目的。那麼應該如何判斷到底哪個是病毒處理序呢?正常的svchost.exe文件應該存在於「C:\Windows\system32」目錄下,如果發現該文件出現在其他目錄下就要小心了。

提示:svchost.exe文件的調用路徑可以通過「系統訊息→軟體環境→正在運行任務」來查看

留言

熱門文章