Windows 商店应用不走 Clash 代理:UWP 回环限制的解除方法

解释为什么 Microsoft Store 应用默认无法访问本机 127.0.0.1 代理端口,介绍 Clash 客户端内置的 UWP Loopback 工具与手动放行方法,并说明生效后如何验证。

先确认问题是不是 UWP 回环限制

典型现象是:浏览器、Git、即时通信工具已经能够通过 Clash 访问网络,但 Microsoft Store 一直显示“重试”、页面图片加载不完整,或者应用下载长时间停在“正在获取许可”。同一台电脑上的部分 Xbox、照片、邮件等商店应用也可能连接失败。此时 Clash 的连接面板里能看到浏览器流量,却看不到对应商店应用的连接。

这类差异通常不是节点速度造成的。传统 Win32 程序可以直接连接本机监听地址,而采用 AppContainer 网络隔离模型的 UWP 或商店应用默认受到回环访问限制。Clash 的系统代理一般指向本机地址,例如 127.0.0.1:7890。应用要使用这个代理,第一步就是访问本机回环接口;如果 Windows 在这一层拦截连接,请求还没有进入 Clash,自然也不会出现在连接记录里。

三个快速判断条件

  1. Clash 已启动,当前配置中至少有一个可用节点,浏览器访问网页正常。
  2. 客户端已开启系统代理,Windows 代理地址指向 127.0.0.1,端口与 Clash 实际监听端口一致。
  3. Microsoft Store 刷新失败时,Clash 的“连接”或“日志”页面没有新增相应请求。

如果三项同时成立,可以继续处理 Loopback Exempt,也就是为指定应用添加本机回环访问豁免。它只改变该 AppContainer 是否允许连接本机地址,不会替代代理规则,也不会自动选择节点。最终流量仍由 Clash 当前的规则模式、策略组和 DNS 设置决定。

回环限制为什么会挡住本机 Clash 端口

Windows 商店应用通常运行在带有应用身份的隔离容器中。系统会按照应用包身份分配网络能力,并限制容器直接访问本机回环地址。设计目标是隔离应用与本机服务,避免应用随意探测运行在 127.0.0.1 上的端口。

Clash 的 HTTP、SOCKS 或 mixed-port 监听器恰好是本机服务。常见配置把混合端口设为 7890

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info

开启系统代理后,Windows 会把支持系统代理的请求交给 127.0.0.1:7890。普通桌面程序可以建立这条本机连接;受限制的 AppContainer 则可能在到达端口前被系统拒绝。因此,节点延迟即使只有 45 ms,Microsoft Store 仍可能无法加载,而 Clash 日志里也看不到一次完整的代理握手。

检查位置 正常结果 异常含义
浏览器联网 网页正常打开 Clash 基础链路仍有问题
本机监听端口 127.0.0.1:7890 正在监听 端口配置或客户端启动异常
Clash 连接面板 商店刷新时出现新连接 完全没有记录时优先检查回环限制
规则命中 请求进入指定策略组 进入 Clash 后失败应检查规则、DNS 或节点

回环豁免解决的是“应用能否连接本机代理”这一段。它不处理订阅失效、策略组选错、规则误判或远端节点超时。排查时把链路拆成“应用 → 本机 Clash 端口 → 代理规则 → 节点 → 目标服务”,可以避免反复更换节点却没有触及真正的阻断位置。

使用 Clash 客户端内置的 UWP Loopback 工具

部分 Windows 图形客户端提供 UWP Loopback 管理入口,底层仍是调用 Windows 的回环豁免机制。不同客户端和版本的菜单名称略有差异,常见路径包括“设置”→“系统设置”→“UWP Loopback”,或“常规”→“UWP 回环”→“启动工具”。旧版 Clash for Windows 常把入口放在 General 页面,按钮名称可能显示为 UWP Loopback。

图形界面操作步骤

  1. 先退出 Microsoft Store、Xbox 等需要处理的应用,避免旧连接继续占用。
  2. 打开 Clash 客户端,确认系统代理已开启,记下“设置”→“端口设置”中的 mixed-port 或 HTTP 端口。
  3. 进入“设置”→“系统设置”→“UWP Loopback”。如果客户端要求管理员权限,确认后继续。
  4. 等待工具枚举应用包,在列表中找到 Microsoft Store。其包身份通常包含 Microsoft.WindowsStore
  5. 勾选 Microsoft Store;若 Xbox、照片或其他商店应用也存在同样问题,可按实际需要分别勾选。
  6. 点击“保存”“应用”或“Save Changes”,等待工具提示设置完成。
  7. 重新打开 Microsoft Store,进入任意应用详情页并刷新,再观察 Clash 的连接面板。

应用列表里可能同时出现显示名称相似的条目。判断时优先看包名或 Package Family Name,而不是只看图标。Microsoft Store 常见的包族名称是 Microsoft.WindowsStore_8wekyb3d8bbwe;Windows 应用安装器通常是 Microsoft.DesktopAppInstaller_8wekyb3d8bbwe。两者用途不同,需要处理哪个就放行哪个。

保存后通常不需要重启 Windows,但应完全关闭并重新打开目标应用。若 Microsoft Store 仍保留旧状态,可以在任务管理器结束对应进程,再启动一次。也可以按 Win + R,运行 wsreset.exe 清理商店缓存;该步骤用于处理缓存和界面状态,不负责添加回环豁免。

客户端没有入口时用命令行手动放行

Windows 自带的 CheckNetIsolation.exe 可以查看、添加和删除 AppContainer 回环豁免。手动操作的关键是取得准确的 Package Family Name,不能只把应用显示名称填进命令。

第一步:查询 Microsoft Store 包族名称

以管理员身份打开 PowerShell,执行:

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

常见输出如下,具体结果应以当前电脑为准:

Name              PackageFamilyName
----              -----------------
Microsoft.WindowsStore Microsoft.WindowsStore_8wekyb3d8bbwe

如果要查找名称中包含 Xbox 的应用,可以使用:

Get-AppxPackage *Xbox* |
  Select-Object Name, PackageFamilyName

第二步:添加回环豁免

确认包族名称后,在管理员终端中执行:

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

参数 -a 表示添加,-n 后面必须是完整的 Package Family Name。命令执行成功后,关闭 Microsoft Store,再重新打开测试。

第三步:检查当前豁免列表

CheckNetIsolation.exe LoopbackExempt -s

输出列表中应能找到刚才添加的包身份。若列表里没有目标项,可能是终端权限不足、包族名称拼写错误,或复制时带入了多余空格。重新从 PowerShell 查询结果复制一次,再执行添加命令。

需要撤销时删除豁免

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

-d 表示删除。修改后再次运行 LoopbackExempt -s,即可确认目标项是否已经移除。回环豁免按应用包身份保存;应用更新通常不会改变包族名称,但卸载后重新安装、系统迁移或应用包身份变化时,建议重新检查列表。

放行后如何确认 Microsoft Store 已经过 Clash

只看到商店页面恢复并不足以判断流量路径,因为页面内容可能来自缓存。更可靠的验证方式是同时观察应用行为、Clash 连接记录和规则命中结果。

验证一:观察连接面板

  1. 打开 Clash 客户端的“连接”页面,并清空现有筛选条件。
  2. 完全关闭 Microsoft Store,然后重新打开。
  3. 进入一个此前没有打开过的应用详情页,切换截图或点击“检查更新”。
  4. 查看连接面板是否出现新的 HTTPS 连接,目标域名可能属于 Microsoft 的商店、许可、内容分发或账户服务。

如果请求已经出现,说明 UWP 应用至少能够访问本机 Clash 端口。接下来要看该连接命中了哪个规则和策略组。若连接显示为 DIRECT,这是规则结果,不代表回环豁免失败;若希望特定域名经过代理,应检查当前规则集,而不是重复添加豁免。

验证二:检查端口与系统代理是否一致

在 PowerShell 中检查常用的 7890 端口:

Get-NetTCPConnection -LocalPort 7890 -State Listen

若没有结果,回到 Clash 的“设置”→“端口设置”,查看实际 mixed-port。部分配置使用 78971080 或其他端口。Windows 的“设置”→“网络和 Internet”→“代理”中,地址和端口必须与客户端当前监听值一致。端口冲突导致 Clash 改用其他值时,旧的系统代理设置也会造成商店连接失败。

验证三:进行可重复的商店操作

一次下载成功只能说明当时链路可用。建议连续测试两次,并在关闭、重新打开 Microsoft Store 后再测一次。这样可以排除缓存、已建立连接和短时网络恢复带来的误判。

仍然无法连接时按固定顺序排查

添加回环豁免后,问题位置通常会从“应用无法访问本机端口”转移到 Clash 内部或上游网络。此时不要重复勾选同一个应用,应按下面顺序逐层确认。

1. 确认配置与端口正在生效

2. 检查规则模式和策略组

规则模式会逐条匹配目标域名。Microsoft Store 涉及账户、许可、应用元数据和内容分发等多个服务,不能只依据一个域名判断整体结果。连接面板显示请求后,重点查看 Rule、Chains 或策略组字段。若规则把部分服务送往不可用节点,商店可能表现为图片可见但下载失败。

临时诊断时可以把目标策略组切换到一个已确认可用、延迟约 50 至 150 ms 的节点,再重试商店更新。全局模式可用于短时对照,但测试结束后应恢复日常使用的规则模式,继续定位具体规则。

3. 检查 DNS

当连接已经进入 Clash,但日志出现域名解析失败、超时或返回异常地址时,应检查 DNS 配置。使用 mihomo 内核时,确认配置中的 dns.enable、监听地址、nameserver 和增强模式相互匹配。若开启 Fake-IP,还要保证系统流量确实由 Clash 接管,避免应用使用另一套 DNS 路径后产生解析与连接不一致。

4. 检查防火墙和安全策略

本机防火墙可能阻止 Clash 监听端口或限制应用容器网络。先确认 Clash 主程序和所用内核能够在当前网络配置文件中运行,再查看是否存在针对 127.0.0.1:7890 或对应进程的阻止规则。公司设备还可能通过组策略管理 Microsoft Store、代理和 AppContainer 网络能力,这种情况下本地修改可能被策略覆盖。

5. 区分系统代理与 TUN 模式

系统代理模式依赖应用主动读取 Windows 代理设置,因此 UWP 回环豁免与本机代理端口直接相关。TUN 模式则通过虚拟网络接口接管更多流量,对不遵循系统代理的程序更有效。启用 mihomo TUN 后,部分商店应用可能不再依赖传统的 127.0.0.1 HTTP 代理路径。

但 TUN 不是回环问题的通用替代步骤。它还涉及管理员权限、服务模式、路由、DNS 劫持和防火墙兼容性。如果当前只有 Microsoft Store 异常,而其他程序通过系统代理稳定工作,优先添加目标应用的 Loopback Exempt,改动范围更小。只有多类程序都不遵循系统代理,或确实需要接管 UDP 等流量时,再评估 TUN 模式。

常见误区与处理结论

开启系统代理等于自动解除 UWP 限制

系统代理只告诉应用代理服务器的位置。AppContainer 能否访问这个本机位置,由回环策略单独决定。两项必须分别确认。

端口写成 7890 就一定正确

7890 是常见默认值,不是固定要求。配置文件、客户端覆写设置或端口占用都可能改变实际监听值。应以当前客户端界面和监听结果为准。

放行 Microsoft Store 会同时覆盖所有商店应用

豁免按包族名称记录。Microsoft Store、应用安装器、Xbox 和其他应用通常拥有不同包身份,需要按实际故障分别查询和添加。

连接进入 Clash 就代表代理链路完整可用

连接出现只证明应用已到达本机代理。后续仍可能因规则命中、DNS、节点握手、远端服务限制或网络策略失败。继续查看日志中的错误阶段,才能判断下一步。

最终可按一个简化结论处理:普通桌面程序正常、商店应用没有任何 Clash 连接记录时,检查 UWP 回环豁免;连接记录已经出现但请求失败时,转查端口、规则、DNS 和节点;多个程序同时异常时,回到 Clash 基础链路和本机网络排查。按这个顺序操作,通常能把问题限定在一个明确层级。

下载 Clash 客户端 Windows、macOS、Android、iOS、Linux