Windows UWP 应用不走 Clash 代理:解除回环限制的两种办法

说明为什么 Microsoft Store 应用默认无法连接本机代理,分别用客户端内置的 UWP 回环工具和 CheckNetIsolation 命令解除限制,并给验证方法。

先判断是不是 UWP 回环限制

浏览器能通过 Clash 正常访问网络,但 Microsoft Store、Xbox、部分邮件或流媒体应用一直报连接失败,常见原因不是节点失效,而是 Windows 的 AppContainer 网络隔离。UWP 应用通常运行在 AppContainer 沙箱中,默认不能随意连接本机回环地址,也就是 127.0.0.1localhost

Clash、Clash Meta(现名 mihomo)及其图形客户端一般在本机监听代理端口。例如混合端口 mixed-port: 7890 对应 127.0.0.1:7890。系统代理开启后,普通桌面程序可以连接这个地址;受限制的商店应用却可能无法连接,于是出现“网页正常,商店应用离线”的差异。

符合回环问题的典型表现

  • Edge、Firefox 或普通桌面软件可以通过代理访问外部站点。
  • Microsoft Store 长时间停在加载状态,或显示无法连接网络。
  • Xbox、反馈中心、旧版邮件等打包应用连接失败。
  • 关闭 Clash 的系统代理后,应用可以直连;重新开启后又失败。
  • Clash 日志中看不到该应用发出的连接记录。

先核对本地代理端口

打开客户端的「设置」→「端口设置」或「设置」→「Mihomo 配置」,确认当前使用的是 HTTP、SOCKS 还是混合端口。常见值是 7890,但实际端口也可能是 78977899 或用户自定义值。Windows 系统代理中的地址必须与客户端监听值一致。

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

mixed-port 表示同一个端口同时接收 HTTP 与 SOCKS 连接。这里的 allow-lan 控制局域网设备是否可以访问代理,与本机 UWP 回环权限不是同一个开关。把它改成 true 不能替代回环豁免。

办法一:使用客户端内置的 UWP 回环工具

图形客户端内置工具是更适合普通用户的处理方式。它通常会列出已安装的 AppContainer 应用,勾选后调用 Windows 的系统接口写入回环豁免。不同客户端的菜单名称略有差异,但核心操作相同。

常见菜单路径

  • Clash Verge Rev 2.x:进入「设置」→「系统设置」,查找「UWP 回环」或「Loopback」入口。
  • 保留经典界面的客户端:进入「常规」或「General」,点击「UWP Loopback」旁的启动按钮。
  • 部分 mihomo 客户端:进入「设置」→「网络」,查找「解除 UWP 回环限制」。

如果当前客户端没有该入口,不代表 mihomo 内核缺少代理能力。回环豁免属于 Windows 权限配置,通常由图形界面或系统命令处理,并不是代理内核配置文件中的字段。

具体操作步骤

  1. 先保持 Clash 客户端运行,并确认系统代理已开启。
  2. 进入客户端的 UWP 回环工具,等待应用列表加载完成。
  3. 找到需要使用代理的应用,例如 Microsoft Store 或 Xbox。
  4. 勾选目标应用,不必一次选中全部条目。
  5. 点击「保存」「应用」或「解除限制」。系统弹出权限确认时允许执行。
  6. 完全关闭目标应用,再重新打开。仅最小化窗口通常不会重建网络进程。

勾选哪些应用更合适

按需授权比全选更容易排查。先勾选当前出问题的应用,保存后立即验证。若 Microsoft Store 恢复,而另一个应用仍失败,再为第二个包增加豁免。这样可以明确哪项修改产生了效果,也便于以后撤销。

目标 建议操作 验证重点
Microsoft Store 勾选对应商店包 首页内容与应用详情能否加载
Xbox 分别检查主程序与身份组件 登录、商店与下载队列
反馈中心 仅勾选反馈中心包 账户状态与内容列表
第三方商店应用 按显示名称与包族名称定位 重新启动后观察 Clash 日志

办法二:用 CheckNetIsolation 精确添加豁免

CheckNetIsolation 是 Windows 自带的命令行工具,可查看、添加和删除 AppContainer 回环豁免。它适合客户端没有内置入口、图形列表加载失败,或需要明确记录修改内容的情况。

命令中的关键参数是 Package Family Name,中文常称“包族名称”,缩写为 PFN。它不是开始菜单里看到的应用标题,也不是安装目录名称。输入错误的包族名称时,命令可能无法作用于目标应用。

第一步:查询应用的包族名称

右键开始菜单,打开「终端(管理员)」或「Windows PowerShell(管理员)」。查询 Microsoft Store 可以运行:

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

常见输出结构如下,实际后缀由发布者标识决定:

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

如果不知道内部名称,可按标题关键字筛选全部包:

Get-AppxPackage |
  Where-Object {
    $_.Name -like "*Store*" -or
    $_.PackageFamilyName -like "*Store*"
  } |
  Select-Object Name, PackageFamilyName

第二步:添加回环豁免

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

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

参数 LoopbackExempt 表示管理回环豁免,-a 表示添加,-n 后面填写包族名称。执行完成后关闭 Microsoft Store,并在任务管理器中确认相关进程已经结束,再重新启动。

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

CheckNetIsolation.exe LoopbackExempt -s

列表中出现目标包的名称或安全标识,说明豁免已经写入。若命令返回成功,但应用仍无法连接,需要继续检查系统代理端口、Clash 日志和规则命中结果。

需要撤销时删除豁免

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

-d 表示删除。撤销后重新启动应用即可。系统更新或应用重新安装后,包注册信息可能变化;如果问题再次出现,应重新查询 PackageFamilyName,而不是直接复用旧命令。

验证应用流量是否真的进入 Clash

应用恢复加载不一定代表流量已经按预期走代理。部分请求可能直连,缓存内容也可能让页面看起来正常。更可靠的办法是结合 Clash 连接日志、规则命中和出口地址进行验证。

观察实时连接

  1. 把 Clash 模式保持为「规则」模式。
  2. 打开客户端的「连接」或「Connections」页面。
  3. 清空筛选条件,记录当前连接数量。
  4. 完全关闭目标 UWP 应用,再重新打开并刷新内容。
  5. 观察是否出现新的域名、目标 IP、进程或策略组记录。

例如打开 Microsoft Store 后,连接页应出现微软服务相关请求,并显示命中的规则和最终策略。不同系统版本、区域和账户状态使用的域名会变化,因此不应只依赖某一个固定域名判断。

临时使用全局模式交叉验证

如果规则模式下仍然失败,可以短暂切换到「全局」模式并选择一个可用节点。若应用在全局模式下恢复,说明回环连接已经建立,后续问题更可能位于规则匹配、DNS 或节点可达性。完成测试后应切回「规则」模式,避免所有流量长期使用同一策略。

对比三个结果

测试结果 更可能的原因 下一步
日志里完全没有新连接 回环豁免未生效或应用未重启 重新查询豁免列表并结束应用进程
有连接,但全部命中 DIRECT 规则将目标流量设为直连 检查规则顺序与策略组选择
有代理连接,但显示超时 节点不可用或目标服务拒绝连接 切换节点并测试同一目标
全局模式正常,规则模式失败 规则或 DNS 配置问题 定位命中规则并检查域名解析

仍然不能联网时检查这五项

1. 系统代理端口与 mixed-port 不一致

假设 mihomo 监听 127.0.0.1:7890,Windows 系统代理却仍指向旧端口 7897,应用即使获得回环权限也无法建立连接。进入 Windows 11 的「设置」→「网络和 Internet」→「代理」,检查手动代理是否由客户端正确接管。

通常不建议同时手工填写 Windows 代理并开启客户端的系统代理开关。两处配置容易在重启或切换端口后不同步。优先让当前客户端统一管理,修改端口后关闭再开启一次系统代理。

2. 客户端没有成功启动内核

查看客户端主页或日志,确认 mihomo 内核处于运行状态。若日志出现端口占用,应先关闭占用进程,或把 mixed-port7890 改为其他空闲端口,并同步刷新系统代理。

netstat -ano | findstr :7890

命令最后一列是进程 PID。可在任务管理器的「详细信息」页按 PID 定位进程。不要直接结束不认识的系统进程,先确认它是否属于另一个代理客户端或上一次未退出的内核实例。

3. 规则把微软服务分到不可用策略

回环豁免只解决“应用能否连接本机代理”,不会替应用选择节点。进入「连接」页面查看请求命中了哪个策略组。如果策略组处于不可用节点、拒绝策略或错误的直连路径,仍会表现为加载失败。

测试时可以为对应策略组手动选择一个延迟稳定的节点。延迟测试成功只说明测试地址可达,不等于所有微软服务都能访问,因此还要结合实际连接状态判断。

4. DNS 解析结果异常

若日志里持续出现 DNS 超时、域名解析失败或目标地址为空,应检查 mihomo 配置中的 dns.enable、上游 DNS 和工作模式。启用 TUN 模式时,还要确认客户端的服务模式或管理员权限已经正常安装,否则 DNS 劫持可能没有生效。

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  nameserver:
    - 1.1.1.1
    - 8.8.8.8

这段配置只是结构示例,不能脱离现有订阅直接覆盖。订阅可能已经设置规则、备用解析与 Fake-IP 过滤列表。修改前应保留原配置,并优先使用客户端提供的覆写功能。

5. 应用进程没有真正重启

关闭窗口后,商店应用可能仍在后台运行。打开任务管理器,在「进程」或「详细信息」页结束对应任务,等待 5 秒再启动。也可以注销 Windows 账户后重新登录,让 AppContainer 进程重新读取权限。

常见问题

为什么浏览器正常,Microsoft Store 却显示离线?

普通桌面浏览器可以连接 127.0.0.1 上的 Clash 代理,而部分 AppContainer 应用默认受到回环限制。先为 Microsoft Store 添加回环豁免,再重新启动应用。

解除回环限制后需要重启电脑吗?

多数情况下不需要。完全结束目标应用进程并重新启动即可。如果应用仍使用旧网络状态,可以注销账户或重启 Windows 后再测。

可以一次勾选全部 UWP 应用吗?

技术上部分工具允许全选,但排障时更建议只处理确实需要代理的应用。按需添加便于验证效果,也方便以后通过 CheckNetIsolation.exe LoopbackExempt -s 核对列表。

切换 Clash 客户端后要重新设置吗?

回环豁免由 Windows 保存,通常不会因为更换客户端立即消失。但新客户端的监听端口、系统代理和 TUN 设置可能不同,仍需确认 Windows 指向当前正在运行的代理端口。

CheckNetIsolation 返回成功,但应用还是无法联网怎么办?

依次检查应用是否彻底重启、系统代理端口是否一致、Clash 连接日志是否出现请求,以及请求命中的规则和策略。全局模式正常而规则模式失败时,重点检查规则与 DNS。

处理顺序总结

  1. 确认普通桌面程序可以通过 Clash 联网。
  2. 确认本地监听端口与 Windows 系统代理一致。
  3. 使用客户端内置工具为目标 UWP 应用添加回环豁免。
  4. 没有图形入口时,用 PowerShell 查询包族名称,再运行 CheckNetIsolation
  5. 彻底结束并重新启动目标应用。
  6. 在 Clash 连接页观察请求、命中规则和最终策略。
  7. 仍失败时再检查节点、DNS、TUN 服务和端口占用。

这类故障的关键是把两个问题分开:回环豁免决定应用能否连接本机代理,Clash 配置决定连接进入代理后如何解析、分流与转发。先确认请求能进入日志,再处理规则和节点,排查会更直接。

获取客户端 查看全平台选择