前言

  UWP是微软从Windows10开始引入的一种新的应用程序形式。虽然这种应用形式带来了比如隐私保护等一些方面的优点,但也带来了一些不方便的地方。不知道你是否经历过这样的情况:虽然在电脑上部署了Clash、Proxifier等一些科学工具,但微软商店的打开还是慢的不行;虽然开了加速器,但玩XGP里面的游戏时还是疯狂断线。就好像你的魔法和加速器根本没起作用一样。其实,它们可能就是没起作用,因为UWP应用默认限制了回环代理,无法访问我们的localhost。本文就是简单整理下有关这个问题的解决方法,顺便也防止我以后忘了,做个备忘。

解决方法

1.Windows官方工具

  微软官方倒也不至于察觉不到这么明显的一个不便之处。因而你的Windows系统内其实已经内置了一个管理应用回环代理的工具——CheckNetIsolation.exe
  这个工具位于C:\Windows\System32下,可以查看,添加,删除允许回环代理的应用白名单(当然它的功能不止这个,与我们的目的无关这里就不赘述了)。接下来介绍下它的使用办法(注意,请以管理员权限运行CMD或powershell)。

管理回环代理的是CheckNetIsolation下的LoopbackExempt

CheckNetIsolation LoopbackExempt -s 
列出现在在回环代理白名单中的所有应用

CheckNetIsolation LoopbackExempt -a -p=[App Container SID] 
为指定SID的UWP应用开启回环代理

CheckNetIsolation LoopbackExempt -d -n=[App Container Name] 
为指定名称的UWP应用关闭回环代理,指定SID和名称的方式可互换

CheckNetIsolation LoopbackExempt -c 
移除所有应用的白名单

  这里有一个问题,App Container Name 和 App Container SID该如何获取。

  • 获取App Container Name
      使用Powershell中的命令Get-AppxPackage查询。以查询极限竞速地平线4为例,使用方法如下:
PS C:\Windows\system32> Get-AppxPackage -User "admin" -Name "*sun*"


Name              : Microsoft.SunriseBaseGame
Publisher         : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
Architecture      : X64
ResourceId        :
Version           : 1.474.687.2
PackageFullName   : Microsoft.SunriseBaseGame_1.474.687.2_x64__8wekyb3d8bbwe
InstallLocation   : C:\Program\Files\WindowsApps\Microsoft.SunriseBaseGame_1.474.687.2_x64__8wekyb3d8bbwe
IsFramework       : False
PackageFamilyName : Microsoft.SunriseBaseGame_8wekyb3d8bbwe
PublisherId       : 8wekyb3d8bbwe
IsResourcePackage : False
IsBundle          : False
IsDevelopmentMode : False
NonRemovable      : False
Dependencies      : {Microsoft.FormulaDriftCarPack_1.0.3.2_neutral__8wekyb3d8bbwe,Microsoft.VCLibs.140.00_14.0.30704.0_x64__8wekyb3d8bbwe}
IsPartiallyStaged : False
SignatureKind     : Store
Status            : Ok

输出结果中的PackageFamilyName就是我们要找的App Container Name。不过这种查询方式并不算特别方便,比如我查的是极限竞速地平线4,但这名字里却没有相关的forza horizon等单词,不是事先知道的话确实不好找。因此我们还有查询SID的方法。

  • 获取App Container SID
      打开注册表管理器,在HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings这个目录下,有若干以SID为命名的目录,每个目录下都有一个叫DisplayName的项,通过这个找到你要修改的应用,复制文件夹名的SID就好了。

Horizon4.png

2.第三方管理工具

  官方的方法虽然好,但用起来没有GUI还挺不舒服的,更别说有的朋友看到命令行就发晕,所以我们也可以用别的第三方工具帮我们管理。这里介绍两个主流的

这两个项目都有着方便管理的GUI,只需要简单的勾选,保存就可以完成工作,所以就不赘述详细的使用方法了。