本文是我對自己上一篇轉載的博客 《Figuring out why my SVCHOST.EXE is at 100% CPU without complicated tools in Windows 7》 的翻譯。本人翻譯的原則是力求通順自然,因此很多地方並沒有嚴格按照原文的詞句來,而是爭取用更符合我們語言習慣的方式表達類似的意思。
原文:Figuring out why my SVCHOST.EXE is at 100% CPU without complicated tools in Windows 7
譯者:hello_mike_ || www.cnblogs.com/hellojianqun/ || hellojianqun@126.com ; 翻譯日期:2015.09.26
=====================================華麗的分割線===================================
SvcHost.exe進程是Windows很多后台服務的宿主。它的全稱是“Service Host”。在這個進程下運行着很多個服務。而且有時在任務管理器中你還會看到不只一個SvcHost.exe。
首先要知道的是,任務管理器在這件事情上是不能指望的了。雖然在任務管理器的“服務”標簽欄中可以看到正在運行的服務的PID,但是要在其中找出正在發了瘋吃你CPU的那個服務,好像也只能靠運氣了……

於是你肯定就會想,這些個SvcHost.exe里面到底跑着些怎樣的服務啊?又到底是哪個服務把我的CPU飈到了100%啊?
要解決這些問題,方法是有很多的。不過可不要簡單地想直接把CPU使用率最高的那個SvcHost.exe進程結束掉就行了,因為這樣會把這個SvcHost.exe底下運行着的其它服務也全部結束了的。
真正能用的方法,比如以下這些命令行:
net start
或者
sc query type= service
又或者
tasklist /svc
但如果用這些的話就違背我寫這篇博客的初衷了,我要介紹的是一種簡單的方法。
究竟是哪個服務崩潰了?
在開始菜單的搜索框中輸入“資源監視器”並運行它。

在每一個SvcHost.exe進程前打上勾(或者只是勾選你感興趣的那幾個),然后,切換到“CPU”標簽欄。

看到中間那個窗格里面的各個服務名稱了沒?這個時候你只要點擊“CPU”那一列的表頭使它們按CPU使用率排列,就馬上知道是哪個服務在搗蛋了。你可以直接在這個服務上右鍵選擇“停止服務”或者“重新啟動服務”,還可以選擇“聯機搜索”,它就會自動打開默認瀏覽器用默認搜索引擎去查找這個服務的相關信息。

上述方法在我編寫和調試服務的過程中不只一次地幫了我大忙。資源監視器會是你的好助手的。然而,好多人都不知道有這個東西存在……
你也來試試吧!
=====================================華麗的分割線===================================
以下為譯者補充:
以上方法只適用於Vista及以上的操作系統,因此在XP上是不行的。並不是說XP上沒有資源管理器所以就不行,而是即使用Process Explorer和Process Hacker這些具有同樣功能的第三方軟件也無法獲取到,所以應該是系統API層面的問題。
