# Windows 處理程序詳解：svchost、Runtime Broker、系統中斷是什麼

工作管理員裡那些看起來很嚇人的 Windows 處理程序，大多是 Windows 本身的正常組成部分，System、系統中斷、服務主機、Runtime Broker、用戶端伺服器執行階段處理程序這些各有各的工作，其中某一個 CPU 使用率高，通常代表它底下有事在做，例如某個驅動程式、某項服務或一次更新。先弄清楚是什麼工作，再決定要不要結束，因為這裡面好幾個處理程序沒辦法安全結束，剩下的結束了也會自己回來。

下面逐一說明常見的名稱是什麼、正版檔案在哪裡、為什麼會忙以及怎麼查。路徑和檔案描述取自一台目前的 Windows 11，在自己的電腦上，可以在工作管理員裡右鍵按一下某一列，選擇「開啟檔案位置」來對照。

## 一覽

| 工作管理員裡的名稱 | 檔案 | 它是什麼 | 能結束嗎 |
| --- | --- | --- | --- |
| System | `C:\Windows\System32\ntoskrnl.exe`（「NT Kernel & System」） | Windows 核心，處理程序 ID 為 4 | 不能 |
| 系統中斷（System interrupts） | 無 | 處理硬體中斷所花的時間 | 不是能結束的處理程序 |
| 記憶體壓縮（Memory Compression） | 無 | 留在記憶體裡的壓縮記憶體分頁 | 不能 |
| 服務主機：…（Service Host） | `C:\Windows\System32\svchost.exe` | 裝著一個或多個 Windows 服務的容器 | 不能，應該去找裡面的服務 |
| Runtime Broker | `C:\Windows\System32\RuntimeBroker.exe` | 替 Microsoft Store 應用程式管理權限的代理 | 可以，記憶體使用量高時 Microsoft 也建議這麼做 |
| Windows 檔案總管（Windows Explorer） | `C:\Windows\explorer.exe` | 工作列、開始功能表、桌面和檔案總管 | 用「重新啟動」，不要用「結束工作」 |
| 桌面視窗管理員（Desktop Window Manager） | `C:\Windows\System32\dwm.exe` | 把每個視窗畫到螢幕上 | 不能 |
| 用戶端伺服器執行階段處理程序（Client Server Runtime Process） | `C:\Windows\System32\csrss.exe` | Windows 使用者模式的核心部分 | 不能 |
| Windows 啟動應用程式 / Windows 登入應用程式 | `C:\Windows\System32` 下的 `wininit.exe` / `winlogon.exe` | 負責啟動和登入 | 不能 |
| Windows 工作的主機處理程序（Host Process for Windows Tasks） | `C:\Windows\System32\taskhostw.exe` | 執行 Windows 的工作 | 別動它 |

## System、系統中斷和記憶體壓縮

**System** 就是 Windows 核心，處理程序 ID 永遠是 4，它的檔案 `ntoskrnl.exe` 在「內容 › 詳細資料」裡的描述是「NT Kernel & System」。這裡 CPU 高只說明核心層級的工作很忙，看不出是哪一部分，先從驅動程式和待安裝的更新查起。Microsoft 的[驅動程式更新指南](https://support.microsoft.com/en-us/windows/update-drivers-through-device-manager-in-windows-ec62f46c-ff14-c91d-eead-d7126dc1f7b6)說取得驅動程式更新最好的途徑是 Windows Update，如果是最近安裝的驅動程式讓情況變糟，可以在「裝置管理員 › 該裝置的內容 › 驅動程式 › 回復驅動程式」裡還原（需要系統管理員權限）。

**系統中斷**不是程式，也沒有檔案，它是處理器回應硬體所花的時間。Microsoft 的 [CPU 分析指南](https://learn.microsoft.com/en-us/windows-hardware/test/wpt/cpu-analysis)講了其中的機制，網路卡這類裝置發出一個中斷，Windows 執行中斷服務常式（ISR），ISR 通常會把剩下的工作排成一個延遲程序呼叫（DPC），處理器在跑 DPC 和 ISR 的時候，上面不能執行任何執行緒，所以中斷時間一多，就可能表現成聲音爆音或畫面卡頓。只要硬體在用，總會有一些中斷時間，電腦閒置時這個數字一直很高，就要懷疑某個驅動程式或裝置了。

要找出是哪一個，可以在系統管理員命令提示字元裡錄一段追蹤。[WPR 命令參考](https://learn.microsoft.com/en-us/windows-hardware/test/wpt/wpr-command-line-options)寫了 `-start` 和 `-stop` 的用法，內建的 GeneralProfile 包含 DPC 和中斷事件：

```cmd
wpr -start GeneralProfile
wpr -stop C:\Temp\interrupts.etl
```

先執行第一行，在系統中斷偏高的時候等一會兒，再執行第二行，目標資料夾必須已經存在。用 Windows Performance Analyzer 開啟這個檔案，看 DPC/ISR 圖表，其中 Module 欄會寫出那個忙碌常式所在的驅動程式檔案。不想裝工具的話，還有個更簡單的辦法，把 USB 裝置和擴充基座一個個拔下來，同時盯著這個數字。

**記憶體壓縮**會把不常用的記憶體分頁以壓縮的形式留在記憶體裡，而不是寫進分頁檔。Microsoft 在 Windows 10 [推出壓縮存放區](https://blogs.windows.com/windows-insider/2015/08/18/announcing-windows-10-insider-preview-build-10525/)時解釋過，這個存放區恰恰是在為其他程式釋放記憶體的時候變大，所以看起來會很大。數字大是其他程式帶來記憶體壓力的結果，而不是原因，真正佔用記憶體的是誰，可以看 [Windows 記憶體使用量高](/tw/windows/blog/windows-high-memory-usage)。

## 服務主機（svchost.exe）：找出裡面的服務

Microsoft 的[服務主機文章](https://learn.microsoft.com/en-us/windows/application-management/svchost-service-refactoring)把 `svchost.exe` 描述成一個共用服務處理程序，從 DLL 檔案載入服務。從 Windows 10 1703 版開始，記憶體超過 3.5 GB 的電腦會讓大多數服務各自跑在獨立的服務主機處理程序裡，所以工作管理員裡會有幾十個，每一列也會標出它裝的服務，例如「服務主機: Windows Update」。也有一些服務仍然合在一起，例如 Base Filtering Engine 和 Windows 防火牆。

所以「svchost CPU 高」沒有統一答案，忙的其實是某個服務，有三種辦法把它找出來：

1. 在工作管理員的「處理程序」頁面裡展開那個忙碌的服務主機列，裡面的服務就列在它下面。
2. 右鍵按一下這一列，選擇「移至詳細資料」取得它的 PID，再開啟「服務」頁面（Windows 10 裡是一個索引標籤），這裡列出了每個服務以及執行它的 PID。
3. 在命令提示字元裡用 [tasklist](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/tasklist)，`/svc` 會列出每個處理程序裡的服務：

```cmd
tasklist /svc /fi "IMAGENAME eq svchost.exe"
tasklist /svc /fi "PID eq 1234"
```

把 `1234` 換成工作管理員裡看到的 PID。接下來處理的是服務，而不是主機，Windows Update 正在收尾一次安裝，或者 wsappx 正在部署一個 Store 應用程式，各有各的解法。結束一個服務主機，會一下子停掉裡面所有服務，而讓服務工作的那個源頭並不會因此停下。

## Runtime Broker、Windows 檔案總管和桌面視窗管理員

**Runtime Broker**（`RuntimeBroker.exe`）跑在目前的工作階段裡，依照 Microsoft [Runtime Broker 文章](https://support.microsoft.com/en-us/windows/runtime-broker-is-using-too-much-memory-ca6ed4e3-2a36-964c-4d2e-8c93980d8a98)的說法，它負責管理 Microsoft Store 應用程式在這台電腦上的權限，平時只用幾 MB 記憶體。Microsoft 自己給的門檻是，如果它佔用的記憶體超過 15%，多半是某個應用程式出了問題，建議的做法是結束 Runtime Broker 工作，然後重新啟動電腦。

**Windows 檔案總管**（`explorer.exe`，直接放在 `C:\Windows` 裡）不只是檔案總管的視窗，工作列、開始功能表和桌面也都是它畫的。如果它當掉或者螢幕變黑，Microsoft 的[黑色畫面疑難排解指南](https://support.microsoft.com/en-us/windows/hardware/display-graphics/troubleshooting-blank-screens-in-windows)說可以按 `Ctrl + Shift + Esc` 開啟工作管理員，右鍵按一下「Windows 檔案總管」選擇「重新啟動」，如果清單裡沒有它，就用「檔案 › 執行新工作」，輸入 `explorer.exe`。

**桌面視窗管理員**（`dwm.exe`）把所有視窗合成為螢幕上的那一幅畫面。Microsoft 的 [DWM 概觀](https://learn.microsoft.com/en-us/windows/win32/dwm/dwm-overview)講了視窗先畫到螢幕外的表面、再由 DWM 算繪到顯示器上的過程，它的工作量跟著螢幕上的內容走。不要結束它，該查哪些地方可以看[桌面視窗管理員 GPU 使用率高](/tw/windows/blog/desktop-window-manager-high-gpu)。

## csrss、wininit、winlogon 和 taskhostw

**用戶端伺服器執行階段處理程序**（`csrss.exe`），用 Microsoft [偵錯說明](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-csrss)裡的話說，是控制 Windows 環境底層的使用者模式處理程序，從 Windows 10 起它是受保護的處理程序。每個工作階段一個，所以看到兩個或更多是正常的，它的 CPU 應該一直接近零，沒什麼可調的，也沒有理由結束它。

**wininit.exe**（檔案描述「Windows 啟動應用程式」）和 **winlogon.exe**（「Windows 登入應用程式」）負責啟動和登入。Microsoft 的 [Winlogon 頁面](https://learn.microsoft.com/en-us/windows/win32/secauthn/winlogon)說 Winlogon 會為視窗站建立桌面、實作逾時操作，還會註冊安全注意序列，也就是按下後進入安全性畫面的 `Ctrl + Alt + Delete`。這兩個處理程序幾乎一直都是閒置的，別去動它們。

**Windows 工作的主機處理程序**（`taskhostw.exe`）替 Windows 執行工作，Microsoft 沒有為它單獨寫過說明頁面。如果它一直很忙，可以在工作排程器裡（工作排程器程式庫 › Microsoft › Windows）看哪些工作正在執行，讓它們跑完，而不是去結束主機。如果 `taskhostw.exe` 不在 `C:\Windows\System32` 裡，那是另一回事，下面會講。

## 忙是有原因的：Defender、更新、搜尋和 Store 應用程式

下面這四個通常是在做正事，做完就會自己停，每一個都有單獨的完整指南：

- **Antimalware Service Executable**（`MsMpEng.exe`，在 `C:\ProgramData\Microsoft\Windows Defender\Platform\<version>\` 下）是 Microsoft Defender 在掃描，見 [Antimalware Service Executable CPU 使用率高](/tw/windows/blog/antimalware-service-executable-high-cpu)。
- **Windows Modules Installer Worker**（`TiWorker.exe`，在 `C:\Windows\WinSxS` 下的某個服務堆疊資料夾裡）替 Windows Modules Installer 服務（`C:\Windows\servicing\TrustedInstaller.exe`）做更新相關的工作，見 [Windows Modules Installer Worker CPU 使用率高](/tw/windows/blog/windows-modules-installer-worker-high-cpu)。
- **Microsoft Windows Search Indexer**（`C:\Windows\System32\SearchIndexer.exe`）在建立搜尋索引，見 [Windows 搜尋索引器 CPU 使用率高](/tw/windows/blog/windows-search-indexer-high-cpu)。
- **wsappx** 是負責 Store 應用程式部署和授權的服務主機，見 [wsappx CPU 使用率高](/tw/windows/blog/wsappx-high-cpu-windows)。

## 辨識冒充的系統處理程序

惡意軟體有時會借用系統處理程序的名稱，名稱說明不了什麼，能說明問題的是位置和簽章。

1. 在工作管理員裡右鍵按一下這個處理程序，選擇「開啟檔案位置」。`svchost.exe`、`csrss.exe`、`RuntimeBroker.exe` 或 `taskhostw.exe` 如果是從使用者資料夾、`AppData`、`ProgramData` 或 `Temp` 裡執行的，就不是 Windows 的檔案，也要留意 `scvhost.exe` 這種只差一個字母的拼法。
2. 右鍵按一下檔案 › 內容 › 詳細資料，正版檔案會顯示 Microsoft Corporation，以及上面表格裡的那段描述。
3. 檢查簽章。大多數 Windows 檔案是透過 Windows 目錄（catalog）簽署的，簽章不在檔案本身裡，所以它們的內容裡沒有「數位簽章」索引標籤，沒有這個索引標籤並不是危險訊號。[Get-AuthenticodeSignature](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/get-authenticodesignature) 也能讀取目錄簽章，把它指向剛才找到的路徑：

```powershell
Get-AuthenticodeSignature C:\Windows\System32\svchost.exe | Format-List Status, SignatureType, SignerCertificate
```

正版檔案會顯示 `Valid`，類型通常是 `Catalog`，憑證屬於 Microsoft Windows。想檢查整個資料夾，可以用 Microsoft 的 [Sigcheck](https://learn.microsoft.com/en-us/sysinternals/downloads/sigcheck)，`sigcheck -u -e c:\windows\system32` 會列出沒有簽章的檔案，Microsoft 的建議是任何沒簽章的檔案都要查一查。

只要有一處看起來不對，就掃描一遍。依照 Microsoft 的 [Windows 安全性指南](https://support.microsoft.com/en-us/windows/virus-and-threat-protection-in-the-windows-security-app-1362f4cd-d71a-b52a-0b66-c2820032b65e)，「掃描選項」在「病毒與威脅防護」下面，選「Microsoft Defender 防毒 (離線掃描)」會重新啟動電腦，在 Windows 載入之前就開始掃描，頑強的惡意軟體更難藏身，結果會出現在「保護歷程記錄」裡。可疑檔案還在執行時不要手動去刪，也絕對不要因為名稱看起來奇怪就去刪 `C:\Windows\System32` 裡的檔案。

## Mole 能做什麼

Mole 的「狀態」頁面按所屬應用程式把處理程序分組，每組的 CPU 和記憶體加總在一起，重複出現的輔助處理程序就合成了一列。在某一列的選單裡選「為什麼在執行？」，會顯示它的執行檔路徑，如果是服務主機，還會按忙碌程度列出它承載的 Windows 服務；「在檔案總管中顯示」會開啟檔案所在的資料夾，方便做上面說的位置檢查。對於 Windows 服務、從 Windows 資料夾執行的程式以及 System 處理程序本身，Mole 不提供「結束」或「強制結束」，而是把這些列標成「系統程序」。正如[說明頁面](/tw/windows/help)裡說的，系統處理程序和跟其他應用程式共用的處理程序都要保留。

Mole 不會改動驅動程式、服務或 Defender 的設定，也不偵測惡意軟體。一般應用程式造成的 CPU 使用率高，可以看 [Windows CPU 使用率高](/tw/windows/blog/windows-high-cpu-usage)。

## 常見問題

### svchost.exe 為什麼佔用這麼多 CPU？

服務主機只是裝著服務，忙的是其中某一個。在工作管理員裡展開這一列，或者執行 `tasklist /svc` 找出是哪個服務，再去處理這個服務，例如 Windows Update 或某個 Store 應用程式的安裝。

### 系統中斷是什麼，能停用嗎？

它是 Windows 處理硬體中斷以及隨後延遲工作所花的時間，不是程式，所以沒有什麼可停用的。一直很高代表某個驅動程式或裝置有問題，可以更新或回復驅動程式，或者錄一段追蹤，看是哪個驅動程式模組在忙。

### Runtime Broker 是什麼，能結束嗎？

它負責管理 Microsoft Store 應用程式的權限。Microsoft 的說法是，如果它佔用的記憶體超過 15%，可以在工作管理員裡結束這個工作，然後重新啟動電腦。

### 怎麼判斷一個 Windows 處理程序是不是病毒？

看檔案在哪裡、是誰簽署的，正版核心處理程序從 `C:\Windows` 或 `C:\Windows\System32` 執行，帶有效的 Microsoft 簽章，很多是目錄簽章。位置或簽章不對，就跑一次 Microsoft Defender 離線掃描。


Canonical: https://mole.fit/tw/windows/blog/windows-processes-explained
