故障排查 预计阅读 9 分钟

Windows 商店应用开代理后无法联网:UWP 回环豁免设置方法

解释 UWP 应用默认禁止访问本机回环地址的机制,演示用 CheckNetIsolation 命令与图形化工具解除限制,并说明改用 TUN 的思路。

先判断:是否只有商店应用无法连接

开启 Clash Verge 系统代理后,浏览器能够访问网站,某个商店应用却一直转圈、登录失败或提示离线,这类现象可能与 AppContainer 的回环隔离有关。处理重点不是先换订阅,而是确认应用能否访问本机代理监听地址,例如 127.0.0.1:7897。

不过,“从 Microsoft Store 安装”不等于“运行在 UWP 沙箱中”。商店也分发普通桌面程序、打包的 Win32 程序和其他类型应用。回环豁免主要针对受到 AppContainer 网络隔离约束的进程,不能当作所有商店联网错误的通用修复。

  • 浏览器也失败:先检查代理端口、节点连通性、订阅是否加载,以及系统代理地址是否正确。
  • 只有一个沙箱应用失败:优先确认它的包身份,再尝试仅为该应用添加回环豁免。
  • 关闭系统代理后恢复:说明故障与代理路径有关,但仍需区分回环限制、应用不支持代理和远端服务拒绝连接。
  • 关闭代理也失败:检查系统时间、应用服务状态、账户登录和本地网络,回环豁免通常不是首选。

UWP 回环隔离与系统代理的关系

系统代理只是向遵循该设置的应用提供代理地址,不会自动接管所有进程的网络连接。代理客户端通常在本机监听 HTTP 或混合代理端口,应用先连接本机端口,再由内核根据规则选择直连或代理节点。

对受到网络隔离约束的 AppContainer 应用来说,访问本机回环地址默认受限。于是即使代理内核正常、浏览器正常,应用仍可能在连接本机代理的第一步失败。这里的“回环”指访问当前计算机自身,例如 IPv4 的 127.0.0.1 和 IPv6 的 ::1,不是访问某个远端节点。

豁免能解决什么,不能解决什么

  • 回环豁免允许指定包的 AppContainer 访问本机回环服务,适用于被这层限制阻断的本地代理连接。
  • 它不会给应用自动配置代理地址,也不会强制所有网络库遵循 Windows 系统代理。
  • 它不会修复订阅失效、DNS 错误、节点超时、证书错误或应用自己的地区限制。
  • 它不会修改 Clash/mihomo 的分流规则;放行后走直连还是代理,仍由有效配置与策略组决定。

不要为了绕过回环限制把监听地址改成 0.0.0.0,或直接关闭 Windows 防火墙。这会改变本地服务的暴露范围,却没有准确处理应用的隔离边界。

使用 CheckNetIsolation 添加单个应用豁免

1. 确认本机代理确实可用

在 Windows 11 中打开「设置」→「网络和 Internet」→「代理」→「手动设置代理」,查看地址与端口;Windows 10 对应入口为「设置」→「网络和 Internet」→「代理」。若由客户端管理系统代理,应先在客户端核对监听端口,避免两边互相覆盖。

打开 PowerShell,测试监听和一次明确指定代理的 HTTPS 请求:

Test-NetConnection -ComputerName 127.0.0.1 -Port 7897
curl.exe --proxy http://127.0.0.1:7897 --head --connect-timeout 10 https://www.microsoft.com/

TcpTestSucceeded : True 只代表 TCP 端口可以连接,不代表节点与网站一定可达。第二条命令使用 10 秒连接超时;收到 HTTP 响应说明这一次请求已获得应用层响应。若连接被拒绝,先修正端口或启动内核,不必继续添加豁免。

2. 查询应用的 PackageFamilyName

在开始菜单搜索 PowerShell,选择「以管理员身份运行」。下面以 Microsoft Store 的包为例,先查询当前用户已安装的包身份:

Get-AppxPackage -Name Microsoft.WindowsStore |
  Select-Object Name, PackageFamilyName, PackageFullName

命令需要的是 PackageFamilyName,不是应用显示名称,也不是带版本号、架构信息的 PackageFullName。微软商店常见的包系列名称是 Microsoft.WindowsStore_8wekyb3d8bbwe,执行前仍应核对实际查询结果。

如果目标是其他应用,先列出当前用户的包,再根据 Name 查找。不要仅因为显示名称相似就给所有结果添加豁免:

Get-AppxPackage |
  Sort-Object Name |
  Select-Object Name, PackageFamilyName

没有查询结果时,先确认应用是否安装在当前账户下、是否为普通桌面程序。若使用另一个管理员账户提升权限,查询到的当前用户包列表也可能不同;不要直接把“没有结果”理解为包已损坏。

3. 添加豁免并检查清单

在管理员终端执行以下命令。第一条添加单个包,第二条显示当前豁免列表:

CheckNetIsolation.exe LoopbackExempt -a -n="Microsoft.WindowsStore_8wekyb3d8bbwe"
CheckNetIsolation.exe LoopbackExempt -s

其中 -a 表示添加,-n 后面是包系列名称,-s 表示查询。列表有时以 SID 或带包名的信息呈现,显示形式可能随系统环境而变化。遇到“拒绝访问”先确认终端是否提升权限;遇到名称相关错误则重新检查复制的字段。

保存工作后完全退出目标应用,再从开始菜单打开。若应用仍保留后台进程,可在任务管理器中结束已确认属于它的进程后重试;不要结束不确定用途的系统进程。

4. 保留可撤销的操作

测试完成后若不再需要该权限,可以只删除刚才添加的条目:

CheckNetIsolation.exe LoopbackExempt -d -n="Microsoft.WindowsStore_8wekyb3d8bbwe"
CheckNetIsolation.exe LoopbackExempt -s

-d 表示删除。建议记录操作日期、目标包和复测结果,不要批量清空原有豁免,否则可能影响其他应用已配置好的本地通信。

图形化工具:选择目标包,不要全部勾选

如果当前客户端提供「UWP 回环豁免」入口,可以通过它启动图形化管理工具;不同客户端、分支与版本的入口并不统一,不能把某个旧客户端的按钮位置直接套到 Clash Verge Rev。找不到入口时,使用上面的系统命令即可,不需要额外安装工具。

常见的图形化实现包括 Fiddler Classic 的 WinConfig/AppContainer Loopback Exemption Utility。若系统已经安装并信任该工具,可通过它管理回环权限。这里用到的是豁免管理功能,不需要开启 HTTPS 解密或导入抓包根证书。

  1. 以管理员权限打开回环豁免工具,等待它列出本机应用包。
  2. 通过应用名称与包身份定位目标;名称不明确时,回到 PowerShell 查询确认。
  3. 只勾选需要访问本地代理的应用,点击工具中的保存按钮,例如 Save Changes。
  4. 运行 CheckNetIsolation.exe LoopbackExempt -s 复核,再重启目标应用测试。

改用 TUN:适合不遵循系统代理的应用

如果回环豁免已经生效,但应用根本不读取系统代理,继续修改清单不会让它自动使用 HTTP 代理。此时可以考虑 mihomo 的 TUN 模式:通过虚拟网络接口与路由接管符合条件的 IP 流量,再交给规则处理。

TUN 的接管路径与“应用主动连接本机 HTTP 代理”不同,因此常用于处理不遵循系统代理的流量。不过,它并不是无条件修复 UWP 网络隔离的开关;应用权限、防火墙、路由与 DNS 设置仍可能影响结果。

  1. 先记录当前系统代理、TUN、DNS 和策略组状态,确保可以恢复。
  2. 在 Clash Verge Rev 中确认服务模式可用,再开启 TUN。服务安装与设置入口以实际版本界面为准,首次安装服务可能需要管理员授权。
  3. 为了区分接管路径,测试时先关闭系统代理,只保留 TUN;不要同时运行另一款 VPN 或代理客户端进行对照。
  4. 复测同一应用的同一操作,并查看客户端连接记录、目标域名与命中规则,而不只看托盘图标是否亮起。

如果开启 TUN 后浏览器也无法解析域名,应优先检查 DNS 与路由,而不是继续添加回环豁免。使用公司 VPN、虚拟机网络或其他隧道时,自动路由可能发生冲突;停止测试并恢复原状态,再逐项对照。TUN 也不会把应用的所有流量强制送往同一个节点,规则中的 DIRECT 仍可能让目标直连。

豁免后仍失败:按连接阶段继续排查

现象 优先检查 下一步操作
本机端口测试失败 内核是否运行、端口是否一致 确认实际监听端口后重新测试
指定代理的 curl 请求也失败 节点、DNS、规则与远端连接 先修复代理链路,不重复添加豁免
豁免存在,应用没有连接记录 包身份、应用代理支持、后台进程 完全退出后复测,必要时对照 TUN
已有连接记录但登录失败 命中策略、服务端返回、账户状态 按具体域名与错误码检查

连接记录中没有条目,并不能单独证明一定是回环隔离:应用可能没有发起请求、使用了缓存,或走了未被接管的路径。相反,如果已经看到目标域名且命中了预期策略,排查重点通常应转向 DNS 结果、节点出口和服务端响应。

不要把 netsh winhttp import proxy source=ie 当作 UWP 回环修复命令。它用于导入 WinHTTP 代理配置,不负责修改 AppContainer 回环权限,也不保证改变目标应用使用的网络栈。只有明确确认某项服务使用 WinHTTP 时,才应在了解影响范围后单独处理。

一套可复现的记录至少包括:Windows 版本、客户端与内核版本、应用包系列名称、代理监听端口、系统代理和 TUN 的开关状态,以及触发错误的具体步骤。用 winver 查看系统版本,再一次只修改一个变量,通常比同时换节点、改 DNS、开 TUN 更容易找到原因。有关规则与接管配置,可继续查阅配置参考;基础连接问题可查看疑难解答。

下载Clash选择系统与安装包