为什么开了系统代理,微软商店反而连不上?

开 TUN 能用、完全不代理也能用,偏偏开系统代理时微软商店报「无法连接」。原因是 UWP 应用的回环隔离:商店连的不是外网,而是 127.0.0.1 上的代理端口,这一步就被沙箱拦了。附三种解法:EnableLoopback 图形工具、CheckNetIsolation 命令、让 AI 帮你排查。

现象

v2rayN 如果是「自动配置系统代理」后,打开微软商店,直接显示「无法连接到 Microsoft Store」,提示关掉 VPN 或者换个网络:

开系统代理时,微软商店提示无法连接

备注

其他代理客户端的配置系统代理也是相同的原理,都是在系统代理配置上操作,设置里面能看到

奇怪的地方在于,另外两种模式都没问题:

代理模式微软商店
不代理正常
TUN 模式正常
系统代理无法连接

按常理,走不走代理只影响「流量从哪条路出去」,不该影响能不能连上。商店的服务器在国内也能直连,就算代理节点慢,也不至于一点都加载不出来。

提示

这就不得不说之前看到的一些话,说的就是微软的产品咖喱味,开了代理无法访问只能直连,今天算是解决这个问题了

原因:回环隔离

微软商店是 UWP 应用,运行在 AppContainer 沙箱里。Windows 对这类应用有一条网络隔离规则:不允许它通过回环地址(127.0.0.1 / localhost)和别的进程通信。微软官方文档《How to enable loopback and troubleshoot network isolation》写得很直接:回环地址不能用于两个不同应用之间的通信,网络隔离限制了这一点。

而系统代理的地址恰好就在回环上。我这台机器的代理设置是:

ProxyEnable   : 1
ProxyServer   : 127.0.0.1:10808

于是三种模式的区别就清楚了:

代理模式商店实际要连的地址结果
不代理微软的服务器正常
系统代理127.0.0.1:10808(v2rayN 的本地端口)被沙箱拦下
TUN 模式微软的服务器(虚拟网卡在下层接管流量)正常

系统代理模式下,商店读到了系统代理设置,老老实实地去连 127.0.0.1:10808,这一步就被拦了。所以它根本没走到「代理好不好用」那一步,连代理本身都没连上。

TUN 模式能用,是因为它工作在网卡这一层:应用看到的是一条普通的外网连接,目标地址是微软的服务器,不经过回环,沙箱没有理由拦。

商店那句「如果使用 VPN,请暂时将其关闭」是笼统的兜底提示,和真正的原因没什么关系。

解决:给商店加回环豁免

办法就是把商店加进回环豁免名单。这件事我之前在《常见的设置代理》的「UWP 应用:解除回环限制」一节里记过,当时是为了让 EA App 这类 UWP 壳的应用走代理,没想到微软商店自己也是一样的情况。

下面三种方法任选一种,效果相同。

方法一:EnableLoopback.exe(图形界面)

EnableLoopback.exe 是 Telerik 出的一个独立小工具,可以直接下载安装:

https://telerik-fiddler.s3.amazonaws.com/fiddler/addons/enableloopbackutility.exe

用 v2rayN 的话不用另外下载,它的程序目录 bin\ 下面就带了一份 EnableLoopback.exe,双击就能用。

窗口标题叫「AppContainer Loopback Exemption Utility」。打开后会列出本机所有 AppContainer 应用,勾上「Microsoft Store」和「Microsoft Store 体验主机」两项,点「Save Changes」即可。

EnableLoopback.exe 里勾选 Microsoft Store 和 Microsoft Store 体验主机

「体验主机」那一项对应的包是 Microsoft.StorePurchaseApp,也就是方法二里的第二条命令。窗口顶上那行说明也印证了前面的原因:Windows 为了安全阻止应用向本机发送网络流量,这个工具用来为调试解除这个限制。

适合不想敲命令、或者一次要放行好几个应用的情况。

方法二:CheckNetIsolation 命令

不想装工具的话,Windows 自带的 CheckNetIsolation.exe 就能做同样的事。用管理员身份打开终端,执行:

powershell
CheckNetIsolation LoopbackExempt -a -n="Microsoft.WindowsStore_8wekyb3d8bbwe"
CheckNetIsolation LoopbackExempt -a -n="Microsoft.StorePurchaseApp_8wekyb3d8bbwe"

第一条是商店本体,第二条是商店的购买组件(独立的一个包,在方法一的列表里显示为「Microsoft Store 体验主机」),一起加上。这两条是 AI 给的,我就是用它们解决的。重开商店,正常了:

加回环豁免后,开着系统代理也能正常加载

方法三:让你自己的 AI 给命令

遇到的不是微软商店、而是别的 UWP 应用,又懒得自己查包家族名,可以直接问 AI。把现象和原因一起说清楚,它给出的命令基本就能直接用,比如:

Windows 上的「某某应用」可能是是 UWP 应用,开系统代理(127.0.0.1:端口)时连不上网,请你帮我排查解决这个问题

如果只说「开代理连不上」的话,AI 很可能先让你检查节点、换 DNS、重置商店缓存,绕一大圈。实际上可能是 UWP 特性。

几点补充

1、同样的问题不只出在商店。其他 UWP 应用在系统代理模式下也会被同一条规则拦住,处理方法一样,如果你遇到其他微软产品也出现连不上的情况,可以优先排查回环问题

2、这个豁免本来是给开发调试用的。微软在那篇文档里写明,回环豁免是供开发测试的能力。加了豁免,意味着商店可以访问本机回环上的所有服务,不只是代理端口。对商店这种系统自带的应用来说问题不大,但不要顺手给来路不明的应用也加上。

3、不想动豁免名单,就用 TUN 模式。它从根上绕开了回环这一步。

评论

评论加载中……

登录后再评论

注册要用邮箱收个验证码,只为确认邮箱能收信,不会拿去做别的。账号设置