# Microsoft Edge WebView2 是什么，可以卸载吗

Microsoft Edge WebView2 Runtime 是 Windows 的共享组件，让普通 App 能用和 Edge 相同的引擎显示网页内容。它显示为 `msedgewebview2.exe`，经常同时有很多个，就算 Edge 关着也一样，它不是病毒，也不是 Edge 浏览器。不要卸载它，靠它的 App 会打不开，如果它占很多内存或 CPU，要处理的是启动它的那个 App，这个 App 的名字是查得到的。

## 它是什么

开发者用 WebView2 把 App 窗口的一部分甚至全部做成网页，微软的 [分发指南](https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution) 说 Evergreen 模式的 App “use a shared copy of the Evergreen WebView2 Runtime”，也就是共用一份，能省磁盘空间，而且它“updates automatically”，会自动更新。同一页还说 Runtime 是 Windows 11 的一部分，绝大多数 Windows 10 设备上也已经有了。

微软的 [进程模型](https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/process-model) 解释了为什么进程这么多，它和浏览器一样，有一个浏览器进程、一个或多个渲染进程，以及 GPU、音频这样的辅助进程，每个用户数据文件夹有自己的一组，通常是一个 App 一个。

一台装 Windows 11 的 ThinkPad 测试机上，Edge 关着，从这个文件夹跑着 12 个副本：

```text
C:\Program Files (x86)\Microsoft\EdgeWebView\Application\<version>\msedgewebview2.exe
```

## 找到背后的 App

每个主副本都把宿主记在命令行的 `--webview-exe-name` 里，下面这段按 App 统计副本数：

```powershell
Get-CimInstance Win32_Process | Where-Object Name -eq 'msedgewebview2.exe' | ForEach-Object {
  if ($_.CommandLine -match '--webview-exe-name=(\S+)') { $Matches[1] }
} | Group-Object | Select-Object Count, Name
```

测试机上只输出一个名字 `wetype_update.exe`，是一个中文输入法的更新程序，占了 10 个副本。崩溃处理这类辅助进程不带这个参数，所以统计数可能比总数少。想再确认，可以看主副本的父进程：

```powershell
Get-CimInstance Win32_Process | Where-Object { $_.Name -eq 'msedgewebview2.exe' -and $_.CommandLine -notmatch '--type=' } | ForEach-Object {
  (Get-CimInstance Win32_Process -Filter "ProcessId=$($_.ParentProcessId)").Name
}
```

## 内存或 CPU 高怎么办

| 看到的情况 | 通常意味着 | 怎么试 |
| --- | --- | --- |
| 几个副本，内存占用不大 | 一个带网页内容的 App，正常 | 不用管 |
| 内存很高，关掉某个 App 就降 | 那个 App 的网页内容 | 更新 App，或者关掉不用的窗口 |
| 副本来自你不用的 App | 后台 App 或更新程序 | 卸载它，或者关掉它的启动项，看 [管理启动项](/zh/windows/blog/manage-windows-startup) |
| 某个 App 开着时 CPU 一直高 | App 里的页面很忙或卡住了 | 重启 App，再更新它 |
| App 提示缺少 WebView2 或打不开 | Runtime 缺失或损坏 | 从 [微软下载页](https://developer.microsoft.com/microsoft-edge/webview2/consumer/) 安装 |

卡住的一组可以在任务管理器的“详细信息”标签页结束，用它的 App 可能出现空白、重新加载或关闭，能关 App 就关 App。

## 占多少磁盘

Runtime 本身是共用的，就地更新，旧版本文件夹可能在新版本旁边留一阵子，测试机上就有两个。占磁盘更多的通常不是 Runtime，而是每个 App 自己的数据文件夹，名字常是 `EBWebView`，在 `AppData` 里那个 App 的文件夹下面，新版 Teams 这类 App 的 Chromium 缓存能涨到好几 GB，可以看 [清理 Teams 缓存](/zh/windows/blog/clear-teams-cache-windows)。

## 它是病毒吗

真正的文件在 `C:\Program Files (x86)\Microsoft\EdgeWebView\Application` 下，由微软签名。App 也可能在自己的文件夹里带一份固定版本，所以位置不同不等于恶意软件，但要看签名：

```powershell
Get-Process msedgewebview2 | Select-Object -First 1 -ExpandProperty Path | Get-AuthenticodeSignature
```

签名者应该是 Microsoft，如果不是，或者副本从 `Temp` 运行，就用 Microsoft Defender 扫描。

## 不要这样做

- 不要用论坛脚本强行删 Runtime，小组件、Teams、Office 的部分功能和很多 App 都可能出问题，它还可能自己装回来。
- 不要手动删 `EdgeWebView\Application` 里的文件，可能有 App 正在从那里运行。
- 不要把它当成 Edge 在后台运行，关 Edge 影响不到它，可以看 [Edge 在后台运行](/zh/windows/blog/edge-running-in-background)。
- 不要因为它去装“内存清理”工具，这些内存是用它的 App 在用。

## Mole 能做什么

Mole for Windows 的“状态”页把从同一文件夹运行的 `msedgewebview2.exe` 副本，按会话折叠成一行，CPU 和内存加在一起，几个 App 共用时也一样。这一行菜单里的“为什么在运行？”会列出占用最高的几个副本，点开一个能看到由谁启动，如果是以你的账户、未提权运行的副本，还有带 `--webview-exe-name` 的“命令”，不用再跑上面的 PowerShell。“终止”和“强制退出”会作用于这一行的全部副本，可能影响不止一个 App，关掉宿主 App 更稳妥。“软件”页把 WebView2 Runtime 当作共享组件，不提供卸载。“清理”可以列出新版 Teams 的 WebView2 缓存。

## 常见问题

### Microsoft Edge WebView2 Runtime 是什么？

它是 Windows 的共享组件，让 App 用 Edge 的引擎显示网页内容，以 `msedgewebview2.exe` 运行，和 Edge 浏览器是两回事。

### 可以卸载 Microsoft Edge WebView2 吗？

不要，用它的 App 会失效或打不开，Windows 或其他 App 也可能再把它装回来。

### msedgewebview2.exe 为什么占这么多内存？

通常是某个 App 在通过它显示网页内容，用 `--webview-exe-name` 找到 App，更新或者关掉它。

### 为什么有这么多 msedgewebview2.exe 进程？

它和浏览器一样，渲染、GPU 和其他辅助工作都是单独的进程，每个用户数据文件夹有自己的一组，通常是一个 App 一个。

### msedgewebview2.exe 是病毒吗？

真正的文件由微软签名，通常从 `C:\Program Files (x86)\Microsoft\EdgeWebView\Application` 运行，从其他位置运行时看一下签名。


Canonical: https://mole.fit/zh/windows/blog/microsoft-edge-webview2-windows
