# 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 应用管权限的代理 | 可以，内存占用高时微软也建议这么做 |
| 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 高只说明内核层面的工作很忙，说明不了是哪一部分，先从驱动和待装的更新查起。微软的[驱动更新指南](https://support.microsoft.com/en-us/windows/update-drivers-through-device-manager-in-windows-ec62f46c-ff14-c91d-eead-d7126dc1f7b6)说获取驱动更新最好的途径是 Windows 更新，如果是最近装的驱动让情况变糟，可以在「设备管理器 › 该设备的属性 › 驱动程序 › 回退驱动程序」里撤回（需要管理员权限）。

**系统中断**不是程序，也没有文件，它是处理器响应硬件所花的时间。微软的 [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 设备和扩展坞一个个拔下来，同时盯着这个数字。

**内存压缩**会把不常用的内存页以压缩的形式留在内存里，而不是写进页面文件。微软在 Windows 10 里[推出压缩存储](https://blogs.windows.com/windows-insider/2015/08/18/announcing-windows-10-insider-preview-build-10525/)时解释过，这个存储恰恰是在为其他程序释放内存的时候变大，所以看起来会很大。数字大是其他程序带来内存压力的结果，而不是原因，真正吃内存的是谁，可以看 [Windows 内存占用高](/zh/windows/blog/windows-high-memory-usage)。

## 服务主机（svchost.exe）：找出里面的服务

微软的[服务主机文章](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 更新在收尾一次安装，或者 wsappx 在部署一个 Store 应用，各有各的解决办法。结束一个服务主机，会一下子停掉里面所有服务，而让服务干活的那个源头并不会因此停下。

## Runtime Broker、Windows 资源管理器和桌面窗口管理器

**Runtime Broker**（`RuntimeBroker.exe`）跑在当前会话里，按微软 [Runtime Broker 文章](https://support.microsoft.com/en-us/windows/runtime-broker-is-using-too-much-memory-ca6ed4e3-2a36-964c-4d2e-8c93980d8a98)的说法，它负责管理 Microsoft Store 应用在这台电脑上的权限，平时只用几 MB 内存。微软自己给的门槛是，如果它占用的内存超过 15%，多半是某个应用出了问题，建议的做法是结束 Runtime Broker 任务，然后重启电脑。

**Windows 资源管理器**（`explorer.exe`，直接放在 `C:\Windows` 里）不只是文件资源管理器的窗口，任务栏、开始菜单和桌面也都是它画的。如果它卡住或者屏幕变黑，微软的[黑屏排查指南](https://support.microsoft.com/en-us/windows/hardware/display-graphics/troubleshooting-blank-screens-in-windows)说可以按 `Ctrl + Shift + Esc` 打开任务管理器，右键「Windows 资源管理器」选择「重新启动」，如果列表里没有它，就用「文件 › 运行新任务」，输入 `explorer.exe`。

**桌面窗口管理器**（`dwm.exe`）把所有窗口合成成屏幕上的那一幅画面。微软的 [DWM 概述](https://learn.microsoft.com/en-us/windows/win32/dwm/dwm-overview)讲了窗口先画到离屏表面、再由 DWM 渲染到显示器上的过程，它的工作量跟着屏幕上的内容走。不要结束它，该查哪些地方可以看[桌面窗口管理器 GPU 占用高](/zh/windows/blog/desktop-window-manager-high-gpu)。

## csrss、wininit、winlogon 和 taskhostw

**客户端服务器运行时进程**（`csrss.exe`），用微软[调试说明](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-csrss)里的话说，是控制 Windows 环境底层的用户模式进程，从 Windows 10 起它是受保护进程。每个会话一个，所以看到两个或更多是正常的，它的 CPU 应该一直接近零，没什么可调的，也没有理由结束它。

**wininit.exe**（文件描述「Windows 启动应用程序」）和 **winlogon.exe**（「Windows 登录应用程序」）负责启动和登录。微软的 [Winlogon 页面](https://learn.microsoft.com/en-us/windows/win32/secauthn/winlogon)说 Winlogon 会为窗口站创建桌面、实现超时操作，还会注册安全注意序列，也就是按下后进入安全界面的 `Ctrl + Alt + Delete`。这两个进程几乎一直都是闲着的，别去动它们。

**Windows 任务的主机进程**（`taskhostw.exe`）替 Windows 运行任务，微软没有为它单独写过说明页。如果它一直很忙，可以在任务计划程序里（任务计划程序库 › 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 占用高](/zh/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 占用高](/zh/windows/blog/windows-modules-installer-worker-high-cpu)。
- **Microsoft Windows Search Indexer**（`C:\Windows\System32\SearchIndexer.exe`）在建立搜索索引，见 [Windows 搜索索引器 CPU 占用高](/zh/windows/blog/windows-search-indexer-high-cpu)。
- **wsappx** 是负责 Store 应用部署和许可的服务主机，见 [wsappx CPU 占用高](/zh/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。想检查整个文件夹，可以用微软的 [Sigcheck](https://learn.microsoft.com/en-us/sysinternals/downloads/sigcheck)，`sigcheck -u -e c:\windows\system32` 会列出没有签名的文件，微软的建议是任何没签名的文件都要查一查。

只要有一处看着不对，就扫描一遍。按微软的 [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 不提供「终止」或「强制退出」，而是把这些行标成「系统进程」。正如[帮助页](/zh/windows/help)里说的，系统进程和跟其他应用共用的进程都要保留。

Mole 不会改动驱动、服务或 Defender 的设置，也不检测恶意软件。普通应用造成的 CPU 占用高，可以看 [Windows CPU 占用高](/zh/windows/blog/windows-high-cpu-usage)。

## 常见问题

### svchost.exe 为什么占用这么多 CPU？

服务主机只是装着服务，忙的是其中某一个。在任务管理器里展开这一行，或者运行 `tasklist /svc` 找出是哪个服务，再去处理这个服务，比如 Windows 更新或某个 Store 应用的安装。

### 系统中断是什么，能禁用吗？

它是 Windows 处理硬件中断以及随后延迟工作所花的时间，不是程序，所以没有什么可禁用的。一直很高说明某个驱动或设备有问题，可以更新或回退驱动，或者录一段跟踪，看是哪个驱动模块在忙。

### Runtime Broker 是什么，能结束吗？

它负责管理 Microsoft Store 应用的权限。微软的说法是，如果它占用的内存超过 15%，可以在任务管理器里结束这个任务，然后重启电脑。

### 怎么判断一个 Windows 进程是不是病毒？

看文件在哪、是谁签的名，正版核心进程从 `C:\Windows` 或 `C:\Windows\System32` 运行，带有效的微软签名，很多是目录签名。位置或签名不对，就跑一次 Microsoft Defender 脱机扫描。


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