SVCHOST.EXE 位於Windows\system32系統資料夾,其檔案描述為“Generic Host Process for Win32 Services”。當Windows啟動時,SVCHOST.EXE將自動檢查Windows登錄檔的系統服務組成、構建系統服務列表,然後將相關 的.DLL動態連結庫檔案載入為具體的執行中的系統服務。因此,我們可以將SVCHOST.EXE看作一個“用於載入系統服務的宿主程式”。
由於每個SVCHOST.EXE程序可能會載入一個或若干個系統服務,直到所有的SVCHOST.EXE將全部系統服務載入完畢,所以我們會在任務管理器 中看到多個SVCHOST.EXE同時執行,這是設計使然。一般地,Windows XP/Windows Server 2003可能會有不超過六個SVCHOST.EXE同時執行;而Windows Vista/Windows Server 2008/Windows 7會有不少於十個SVCHOST.EXE同時執行。
當您運行了Windows任務管理器後,您可能會在“程序”選項卡中看到若干個名稱均為SVCHOST.EXE的程序正在同時執行。而且,這些SVCHOST.EXE可能有一個或若干個佔用了較多的系統資源,影響了計算機的工作效率。
SVCHOST.EXE 位於Windows\system32系統資料夾,其檔案描述為“Generic Host Process for Win32 Services”。當Windows啟動時,SVCHOST.EXE將自動檢查Windows登錄檔的系統服務組成、構建系統服務列表,然後將相關 的.DLL動態連結庫檔案載入為具體的執行中的系統服務。因此,我們可以將SVCHOST.EXE看作一個“用於載入系統服務的宿主程式”。
由於每個SVCHOST.EXE程序可能會載入一個或若干個系統服務,直到所有的SVCHOST.EXE將全部系統服務載入完畢,所以我們會在任務管理器 中看到多個SVCHOST.EXE同時執行,這是設計使然。一般地,Windows XP/Windows Server 2003可能會有不超過六個SVCHOST.EXE同時執行;而Windows Vista/Windows Server 2008/Windows 7會有不少於十個SVCHOST.EXE同時執行。
當您在Windows任務管理器中檢視 SVCHOST.EXE程序時,SVCHOST.EXE程序的“使用者名稱”應該顯示為SYSTEM、LOCAL SERVICE或NETWORK SERVICE。(如果在任務管理器中看不到“使用者名稱”,請在選單中選擇“檢視”-“列設定”,選中“使用者名稱”複選框。)如果某個SVCHOST.EXE 程序的“使用者名稱”顯示的是使用者帳戶的名稱(例如Administrator),則這個SVCHOST.EXE很可能是冒仿的惡意程式。
另外您需要確認,您看到的SVCHOST.EXE程序的名稱拼寫是否有誤。比如假設顯示的程序名稱是SVCH0ST.EXE(用數字0替換了字母O),則 很可能是冒仿的惡意程式;再比如程序的名稱雖然是SVCHOST.EXE,但此程序卻沒有位於Windows\system32(Windows Vista以上版本的任務管理器可以檢視程序所在的資料夾路徑),則也可能是冒仿的惡意程式。
由於SVCHOST.EXE是載入系統服務的宿主程序,所以您如果發現某SVCHOST.EXE程序佔用的系統資源較多,即表明透過這個 SVCHOST.EXE程序載入的系統服務佔用的系統資源較多。您首先需要確定透過這個SVCHOST.EXE程序載入的系統服務具體是什麼,然後根據計 算機的實際情況決定是否關閉相應的系統服務、以釋放服務佔用的系統資源,這樣SVCHOST.EXE即可釋放相應的系統資源。
雖然大多數系統服務只有在遇到故障時才會佔用較高的系統資源,但某些特殊的服務即使是正常工作狀態也將消耗較多系統資源。例如Automatic Updates自動更新服務,當自動更新在後臺搜尋可用的系統更新程式時必將佔用較高的資源,這是設計使然而不是故障。
判斷一個SVCHOST.EXE載入了哪些系統服務有兩種方法
方法一:
在Windows任務管理器的“程序”選項卡中檢視佔用資源較高的SVCHOST.EXE程序對應的PID,將PID記下。(如果在任務管理器中看不到“PID”,請在選單中選擇“檢視”-“列設定”,選中“PID”複選框。) 以管理員許可權執行命令提示符(CMD.EXE),在命令提示符中執行:TASKLIST –SVC
您將看到類似如下所示的結果:
影象名 PID 服務
SVCHOST.EXE 1104 DcomLaunch,TermServices
SVCHOST.EXE 1188 RpcSs
……
對 照您在任務管理器中看到的SVCHOST.EXE的PID,在上述結果中查詢對應的 SVCHOST.EXE。例如,假設您在任務管理器中看到PID為1188的SVCHOST.EXE佔用了較多系統資源,而TASKLIST –SVC的結果顯示PID為1188的SVCHOST.EXE載入的服務是RpcSs,即表明RpcSs服務(Remote Procedure Call (RPC) 服務)佔用了較高的系統資源。方法二:
在microsoft.com下載系統工具Process Explorer:http://www.microsoft.com/technet/sysinternals/Utilities/ProcessExplorer.mspx (http://www.microsoft.com/technet/sysinternals/Utilities/ProcessExplorer.mspx)
執行Process Explorer,在程序列表中找到佔用系統資源較多的SVCHOST.EXE程序,右鍵單擊選擇Properties(屬性),切換至Services(服務)選項卡,在這裡即可檢視SVCHOST.EXE程序載入的系統服務是什麼。