Windows 商店应用不走 Clash 代理:UWP 回环豁免解除步骤

解释 UWP 网络隔离为何拦截本地回环,分别用客户端内置工具与 CheckNetIsolation 命令为商店应用解除限制。

先判断:是不是本地回环被拦截

浏览器能联网、某个商店应用却连接失败,才适合优先检查回环限制。如果浏览器也打不开网站,先检查配置是否启用、节点是否可用、代理端口是否正在监听。回环豁免不能修复失效的订阅、错误的密码或不可达的服务器。

UWP 是 Windows 的一种应用平台。这类应用通常运行在 AppContainer,也就是限制应用访问范围的隔离环境中。本地回环指应用访问本机地址,例如 127.0.0.1 或 ::1。Clash 的本地代理恰好常监听在这些地址上,因此即使系统代理已经指向 Clash,隔离中的应用也可能无法连接它。

不过,从 Microsoft Store 安装,不等于一定是 UWP 应用。商店也分发传统桌面程序和打包的桌面程序。应结合应用类型、代理设置和连接日志判断,不要把所有商店应用的联网问题都归为回环限制。

观察到的现象 优先检查 下一步操作
浏览器与目标应用都失败 内核、端口、节点和规则 先验证本地代理链路
浏览器正常,隔离应用失败,Clash 无对应连接 回环限制或应用不采用系统代理 对目标包添加豁免后复测
Clash 已出现应用请求,但连接超时 命中的策略、节点、DNS 和远端服务 读取连接详情,不反复添加豁免
商店界面可用,下载任务失败 下载服务和后台组件的联网路径 区分前台界面与后台下载流量

操作前:确认系统代理和本地端口

先记录真实端口,再解除隔离。下文用 127.0.0.1:7890 演示,这是示例地址,不是所有客户端的默认值。HTTP 端口用于接收 HTTP 代理请求;混合端口通常同时接受 HTTP 和 SOCKS 请求。Windows 的手动代理应填写支持 HTTP 代理的端口,不要误填只提供 SOCKS 服务的端口。

  1. 打开客户端,确认已选中一份可用配置,并查看端口设置或运行配置中的 port、mixed-port 字段。以当前生效的设置为准。
  2. 启用客户端的“系统代理”。Windows 11 可进入「设置」→「网络和 Internet」→「代理」→「手动设置代理」→「编辑」,核对地址和端口。
  3. Windows 10 可进入「设置」→「网络和 Internet」→「代理」,查看“使用代理服务器”。客户端可能负责自动填写这些值,检查时不必重复手动修改。
  4. 先用浏览器测试一个已知可用的 HTTPS 页面,再观察客户端的“连接”或“日志”面板。浏览器若使用了单独的代理扩展,其成功结果不能代表 Windows 系统代理正常。

用命令确认端口监听

在 PowerShell 中运行以下命令。若实际端口是 7897,请把命令中的 7890 改为 7897。返回监听记录说明本机已有程序监听该端口;还需要确认它确实属于当前使用的内核。

Get-NetTCPConnection -State Listen -LocalPort 7890 |
  Select-Object LocalAddress, LocalPort, OwningProcess

Test-NetConnection -ComputerName 127.0.0.1 -Port 7890

TcpTestSucceeded : True 只说明这次 TCP 连接建立成功,不代表远端网站或节点正常。PowerShell 本身通常不处于目标应用的隔离环境内,所以这一步也不能证明 UWP 已获准访问回环。

方法一:用客户端内置的 UWP 工具

客户端提供 UWP 工具时,优先按应用勾选。部分 Windows 客户端会附带回环豁免界面,入口可能叫“UWP 回环”“Loopback”或“UWP Loopback”。这是图形客户端的附加功能,不是 Clash 或 mihomo 内核统一提供的菜单。

例如,旧版 Clash for Windows 0.20.x 的界面可在「General」页找到「UWP Loopback」入口。这个路径只用于识别已有安装,不能照搬到其他客户端。当前客户端若没有相同入口,直接使用下一节的 Windows 命令即可。

  1. 打开 UWP 回环工具。若出现 Windows 权限确认,先确认发起操作的是当前客户端附带的工具,再允许提升权限。
  2. 在应用列表中找到目标应用。列表名称可能与开始菜单中的名称略有差异,必要时通过发布者和包名称核对。
  3. 只勾选需要使用本地代理的应用,再点击保存或应用。不同工具的按钮可能显示为“Save Changes”或“Apply”。
  4. 完全退出目标应用,确认它不再驻留后台,再重新打开并触发一次需要联网的操作。
  5. 进入 Clash 的连接或日志面板,观察是否出现新的目标域名请求。不要只凭应用首页的缓存内容判断成功。

方法二:用 CheckNetIsolation 添加回环豁免

Windows 自带的 CheckNetIsolation 可以查询和修改豁免名单。下面以 Microsoft Store 应用包为例。请在当前用户账户下,以管理员身份打开 PowerShell;在 Windows 11 中,也可以右键开始按钮,选择「终端管理员」。若使用另一名管理员的账户凭据启动终端,需要留意查询到的应用包是否仍属于目标用户。

第一步:查找准确的应用包族名称

命令需要的是 PackageFamilyName,中文常称“包族名称”。它不是桌面快捷方式名称,也不是包含版本号和架构的 PackageFullName。先查询当前用户安装的商店应用包:

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

常见结果中的包族名称为 Microsoft.WindowsStore_8wekyb3d8bbwe,但实际操作仍以本机输出为准。如果目标不是商店本身,可以按包名的一部分检索,例如查询 Xbox 相关包:

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

通配查询可能返回多个结果。不要把所有结果都加入名单,也不要把显示名称直接当成包族名称。若查询没有输出,先确认应用是否安装在当前账户中,以及它是否真的是可通过此方式识别的应用包。

第二步:给目标包添加豁免

下面的 PowerShell 代码会读取当前用户的 Microsoft Store 包,再把它加入回环豁免列表。代码中的空值检查用于避免应用未安装时继续执行;给其他应用操作时,需将 Microsoft.WindowsStore 改成已核实的准确包名。

$package = Get-AppxPackage -Name Microsoft.WindowsStore

if ($null -eq $package) {
    throw "当前用户未找到 Microsoft.WindowsStore 应用包。"
}

$family = $package.PackageFamilyName
CheckNetIsolation.exe LoopbackExempt -a "-n=$family"

-a 表示添加,-n 后面跟包族名称。若系统提示拒绝访问,先检查终端是否已经提升管理员权限。不要通过关闭系统安全功能来绕过权限要求。

第三步:读取名单并重新启动应用

CheckNetIsolation.exe LoopbackExempt -s

-s 用于显示当前豁免列表。检查其中是否包含目标包族名称;部分条目也可能以安全标识符形式显示。命令显示添加成功后,应再关闭并重开目标应用,触发新的网络请求。必要时注销后重新登录,排除旧进程继续驻留的影响。

如何确认生效,以及安全撤销

同时看应用结果和 Clash 连接记录。一项设置是否有效,最好用修改前后的同一操作对照,而不是只看命令执行成功。测试期间保持同一个节点和同一份配置,避免同时切换多个条件。

  1. 记录修改前的症状,例如“商店搜索失败”,而不是笼统记录“不能联网”。
  2. 添加目标包的回环豁免,完全退出并重新打开应用。
  3. 重复同一次搜索或刷新操作,查看应用是否得到新的服务端结果。
  4. 在 Clash 中核对对应时间的连接、域名和策略。规则模式下命中 DIRECT,表示请求被分配为直连,并不表示回环设置失败。

不再需要时,按包删除

撤销时使用 -d。下面仍以 Microsoft Store 为例,并重新查询包族名称,因此不依赖前一次终端会话里的变量:

$package = Get-AppxPackage -Name Microsoft.WindowsStore

if ($null -eq $package) {
    throw "当前用户未找到 Microsoft.WindowsStore 应用包。"
}

$family = $package.PackageFamilyName
CheckNetIsolation.exe LoopbackExempt -d "-n=$family"
CheckNetIsolation.exe LoopbackExempt -s

删除后再次查看名单,确认目标条目已经移除。不要为了撤销单个应用的设置而清空全部豁免;其他应用、开发环境或调试工具可能也依赖已有条目。应用重装后若包族名称发生变化,需要重新核对,不能只看旧条目还在就认为新安装也已获得授权。

添加后仍不走代理:按流量路径继续排查

系统代理、全局模式与 TUN 不是同一层设置

“全局模式”不会强制每个进程连接 Clash。它主要决定已经进入内核的流量如何选择出口。应用如果根本没有采用系统代理,切换全局模式也不能让它自动进入内核。先区分“请求没有进来”与“进来后走错出口”。

TUN 是通过虚拟网络接口接管流量的方式。使用 mihomo 的客户端通常可以在相应设置中启用,但是否覆盖目标流量还取决于路由、DNS、权限和排除项。启用 TUN 不是回环豁免的另一种叫法,也不能承诺一定解决所有商店应用问题。若要测试 TUN,先保存现有设置,一次只改变一个条件,并检查连接日志。

前台界面与后台下载可能不是同一个进程

Microsoft Store 的页面请求与应用下载、更新任务可能经过不同组件。给商店前台包添加豁免后,不能推断后台服务也会采用同一用户的系统代理。遇到“页面能打开、下载仍失败”,应继续查看 Windows 下载服务、网络错误和实际连接记录,而不是不断添加不相关的应用包。

不要把 WinHTTP 设置当成通用修复按钮

Windows 的用户代理设置与 WinHTTP 代理配置不是完全相同的一套机制。WinHTTP 是部分程序和系统服务使用的网络接口;修改其代理会影响其他任务。可以用下面的只读命令查看现状,但不应在尚未确认请求来源时盲目导入或覆盖设置。

netsh winhttp show proxy

如果日志已有目标请求,下一步应检查域名解析、规则命中和节点可用性。若完全没有请求,则继续确认应用是否使用独立代理、是否从其他进程联网,以及它是否真的属于受回环限制的应用类型。需要对照字段时,可以查看YAML 手册;一般连接问题可先读常见问题。

下载Clash