2009/02/19

svchost.exe使得CPU執行100%的解決辦法

Svchost.exe 是從動態連結程式庫 (DLL) 執行之服務的一般性主處理程序名稱。
Svchost.exe 檔位於 %SystemRoot%System32 資料夾中。電腦啟動時,Svchost.exe 會檢查登錄中的服務部分,以建立一份它需要載入的服務清單。多個 Svchost.exe 執行個體可以同時執行,每一個 Svchost.exe 工作階段都可以包含一組服務,這樣個別的服務就可以依據 Svchost.exe 啟動的方式與位置來執行。這樣也比較容易進行控制與偵錯。

簡 單地說,svchost.exe 是 Windows XP 系统的一個 Kernel Process(就是一定會跑的東西啦)。svchost.exe 不單單只出現在 Windows XP 中,在使用 NT Kernel 的 Windows 系統中都會有 svchost.exe 的存在。一般在 Windows 2000 中 svchost.exe 處理程序的日大概是 2 個,而在 Windows XP 中 svchost.exe 處理程序的數目就上升到了 4 個及 4 個以上。所以看到系统的處理程序列表中有好幾個 svchost.exe 的話,是不用那麼擔心的。

svchost.exe 吃掉所有 CPU 資源的原因很多,不過我的狀況都是在執行 Windwos Update 時發生的(或是自動更新服務 Automatic Updates 執行時)。因此解決方法主要就是把 Windows 的自動更新重設一次,步驟如下:

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

二、接著重新註冊 Windwos 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

四、大功告成!

沒有留言:

Buddhism and Software Developer

In today's fast-paced society, we are often surrounded by work, goals, and external pressures. However, the wisdom found in Buddhism off...