2015年2月11日 星期三

工作管理員中有很多SVCHOST.EXE在執行,作用是什麼?

工作管理員中有很多SVCHOST.EXE在執行,作用是什麼?



當開啟Windows工作管理員時,常常會發現有很多個SVCHOST.EXE在執行,請問這個處理程序的用途是?若發現此程序占用了大量系統資源,又該如何處理?




根據微軟中文知識庫編號314056的文件說明:「SVCHOST.EXE是從動態連結程式庫(DLL) 執行之服務的一般性主處理程序名稱」。當電腦啟動時,SVCHOST.EXE會檢查登錄中的服務部分,以建立一份它需要載入的服務清單。多個SVCHOST.EXE可以同時執行,且每一個 SVCHOST.EXE工作階段都可以包含一組服務。

由於這個程序是開啟Windows服務的重要檔案,因此之前也曾有疾風等多種病毒,會利用SVCHOST.EXE來達到入侵或破壞等目的。所以當發生占用系統資源的情形時,可先利用Process Explorer這個工具,檢查哪一個DLL是讓SVCHOST.EXE占用大量處理器資源的元兇。一般而言若不是電腦中毒,則很有可能會發現是MSI.DLL或是NT.DLL造成的。

MSI.DLL或NT.DLL是屬於Windows Update服務的動態連結程式庫,會在每天固定時間,或系統重新開機後,上網搜尋Microsoft產品的更新元件,當電腦處理器或記憶體等硬體等級較差時,便很有可能占用全部資源。比較簡單的解決方法,是將Windows Update的自動執行排程,設定在半夜或凌晨等不會使用到電腦的時間,並且一直保持在開機狀態。不然就得要徹底停止Windows Update服務,但這方式會讓系統無法自動更新,修補漏洞時,非不得已,最好不要採取這項作法。

停止該服務的方法如下:

第一步:重新檢查系統的服務狀態
首先在「開始」工具列按下「執行」,並輸入「services.msc」後按「確定」,再點選「服務(本機)」的「Automatic Updates」。選擇「登入」標籤,確定登入身分為「本機系統帳戶」,且取消勾選「允許服務與桌面互動」對話框。之後確認服務已在目前的「硬體設定檔」中被啟用,若設定檔中沒有顯示已啟用服務,則按下「啟用」按鈕。完成後進入「一般」標籤,檢查「啟動類型」是否為「自動」,並按下「啟動」按鈕。

完成後回到「服務(本機)」頁面,並對「Background Intelligent Transfer Service (BITS) 」服務重複執行上述步驟。


檢查Automatic Updates服務狀態。


第二步:重新註冊Windwos Update 的元件
同樣也是先在「開始」工具列啟動「執行」,之後輸入「REGSVR32 WUAPI.DLL」,當看到「DllRegisterServer在WUAPI.DLL成功」的訊息後按下「確定」。

之後以上述步驟重新註冊其他相關檔案,例如REGSVR32 WUAUENG.DLL、 WUAUENG1.DLL、ATL.DLL、WUCLTUI.DLL、WUPS.DLL、WUPS2.DLL,以及WUWEB.DLL 等元件。

第三步:清除可能已損壞的 Windows Update 暫存目錄
在「程式集」的「附屬應用程式」中,開啟「命令提示字元」,並在命令提示字元中輸入「net stop WuAuServ」。(此時若出現錯誤訊息請先重開機後再執行一次),完成後在「開始」工具列選擇「執行」,並輸入「%windir%」。在「Windows」目錄中,找到「SoftwareDistribution」資料夾,並將整個資料夾刪除(若擔心造成系統錯誤亦可先暫時改名),之後再次啟動「命令提示字元」,並輸入「net start WuAuServ」指令。完成上述步驟後重新開機,即可停止Windows Update服務。

沒有留言:

張貼留言