给App指定msedgewebview2.exe,不使用默认WebView2
现在很多程序通过WebView2访问网络。防火墙难以防护不该访问网络的app。
为了能控制App能访问网络,需要复制或新装WebView2给App专用,
这样就可以控制App和专用WebView2的网络访问。
- 核心机制:
WebView2Loader.dll的运行时解析顺序(①程序代码传参→②环境变量→③按应用注册表策略→④AppX→⑤系统 Evergreen),以及"不会因WebView2放在 exe 旁就被自动发现"这个关键事实。 - 专用方案:注册表策略(值名 = 目标进程 exe 名),无批处理、持久、且只影响那一个程序。
以腾讯视频为例,腾讯视频是利用WebView2播放的视频,因此需要给腾讯视频的WebView2开放网络访问,遂复制WebView2到腾讯视频目录,
让腾讯视频使用复制后的WebView:

编辑注册表reg文件:
Windows Registry Editor Version 5.00 ; ============================================================ ; 让腾讯视频(QQLive.exe) ONLY 使用复制版 WebView2, ; 不影响系统其他 WebView2 应用。无需批处理文件。 ; 双击本文件 -> 允许合并到注册表即可(HKLM 部分需管理员权限)。 ; ============================================================ ; 机器策略:对所有用户 / 服务拉起的 QQLive 生效(x64 原生视图) [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge\WebView2\BrowserExecutableFolder] "QQLive.exe"="D:\\Program Files\\Tencent\\QQLive\\WebView2Runtime" ; 32 位视图(保险,loader 位ness 兼容) [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Microsoft\Edge\WebView2\BrowserExecutableFolder] "QQLive.exe"="D:\\Program Files\\Tencent\\QQLive\\WebView2Runtime" ; 用户策略:覆盖那些只读 HKCU 的 loader [HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\BrowserExecutableFolder] "QQLive.exe"="D:\\Program Files\\Tencent\\QQLive\\WebView2Runtime"
reg合并到注册表后,启动腾讯视频
查看使用的WebView2:
PowerShell中运行:
Get-CimInstance Win32_Process -Filter "Name='msedgewebview2.exe'" | ForEach-Object {
[PSCustomObject]@{Parent=(Get-CimInstance Win32_Process -Filter ('ProcessId='+$_.ParentProcessId)).Name; Path=$_.ExecutablePath}
}

可见QQLive.exe调用的是复制的专用msedgewebview2.exe
另外还有一种方案,需要用批处理启动app:
通过临时设置 WebView2路径环境变量WEBVIEW2_BROWSER_EXECUTABLE_FOLDER 等于专用WebView的目录:
@echo off :: ============================================================ :: Launcher for Tencent Video (QQLive) that forces it to use :: the COPIED WebView2 runtime under its own install folder. :: :: WHY this works: the WebView2 loader honors the env var :: WEBVIEW2_BROWSER_EXECUTABLE_FOLDER with the HIGHEST priority, :: and an env var set here is inherited ONLY by QQLive.exe and :: its child msedgewebview2.exe process -- NOT by any other app :: on the machine. So the system WebView2 stays the default :: everywhere else. :: :: Usage: double-click this file instead of the normal QQLive :: shortcut. (The one-time copy + ACL step is done by :: qqlive_webview2_redirect.bat, already run.) :: ============================================================ set "WEBVIEW2_BROWSER_EXECUTABLE_FOLDER=D:\Program Files\Tencent\QQLive\WebView2Runtime" start "" "D:\Program Files\Tencent\QQLive\QQLive.exe"
浙公网安备 33010602011771号