uwp应用代理

本人习惯使用onenote记录一些问题和做记录,最近发现开启本地http代理服务器后onenote无法同步,但是我代理配置是无误的。经过查询发现这个是uwp应用的特性:

UWP 是微软在 Windows 10 中引入的新概念,由于所有 UWP 应用均运行在被称为 App Container 的虚拟沙箱环境中,其安全性及纯净度远胜于传统的 EXE 应用。但 App Container 机制同时也阻止了网络流量发送到本机(即 loopback), 使大部分网络抓包调试工具无法对 UWP 应用进行流量分析。同样的,该机制也阻止了 UWP 应用访问 localhost,即使你在系统设置中启用了代理,也无法令 UWP 应用访问本地代理服务器。

所以只要设置uwp应用可以访问本地代理服务器就能解决问题了。

解决方法:

参考官方给的解决方案 要解决此问题,您需要使用PowerShell命令将有关应用添加到 Windows 10 回路豁免列表。 将带有"Microsoft.MinecraftUWP_8wekyb3d8bbwe"的包名的应用程序添加到循环回路豁免列表中。 要查找包名,您可以使用以下powershell命令:

Get-AppxPackage #列出所有uwp应用程序。
Get-AppxPackage | Select-String -Pattern "Minecraft" #列出所有名字中含有“Minecraft”的应用程序。
CheckNetIsolation LoopbackExempt -d -n="Microsoft.MinecraftUWP_8wekyb3d8bbwe" # 使用程序名字从豁免列表中剔除该程序
CheckNetIsolation LoopbackExempt -d -p="sid编号" # 使用程序sid从豁免列表中剔除该程序
CheckNetIsolation LoopbackExempt -s #展示豁免列表
CheckNetIsolation LoopbackExempt -c  #清除豁免列表

法1 查询注册表sid

举例:

Get-AppxPackage | Select-String -Pattern "onenote"	#查找onenote包名称
#查询到onenote 包名为 Microsoft.Office.OneNote_16001.13801.20202.0_x64__8wekyb3d8bbwe
CheckNetIsolation LoopbackExempt -a -n="Microsoft.Office.OneNote_16001.13801.20202.0_x64__8wekyb3d8bbwe" 	#添加至豁免列表
CheckNetIsolation LoopbackExempt -d -n="Microsoft.Office.OneNote_16001.13801.20202.0_x64__8wekyb3d8bbwe" 	#从豁免列表中移除

法2 注册表查询程序包名

win+r 输入regedit,打开注册表编辑器,地址栏粘贴 HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings,里面的DisplayName值就是应用名称,查询对应程序的sid类似S-1-15-2-3445883232-1224167743-206467785-1580939083-2750001491-3097792036-3019341970形式

CheckNetIsolation.exe loopbackexempt -a -p=UWP的SID
CheckNetIsolation.exe loopbackexempt -d -p=UWP的SID
#举例:豁免onenote走代理
CheckNetIsolation.exe loopbackexempt -a -p=S-1-15-2-3445883232-1224167743-206467785-1580939083-2750001491-3097792036-3019341970

onenote问题

可惜的是,法1对MinecraftUWP有效,对onenote失效。可能是其包名不对,该包名指向的是office套件中的onenote。打印如下的豁免表可知,法二生成的豁免表是生效的 法2生成

列出环回免除的 AppContainer

[1] -----------------------------------------------------------------
    名称: microsoft.office.onenote_8wekyb3d8bbwe
    SID:  S-1-15-2-3445883232-1224167743-206467785-1580939083-2750001491-3097792036-3019341970

[2] -----------------------------------------------------------------
    名称: AppContainer NOT FOUND
    SID:  S-1-15-2-3624051433-2125758914-1423191267-1740899205-1073925389-3782572162-737981194-4043415302-551583165-304772019-4009825106

[3] -----------------------------------------------------------------
    名称: 001
    SID:  S-1-15-2-3624051433-2125758914-1423191267-1740899205-1073925389-3782572162-737981194-4256926629-1688279915-2739229046-3928706915

法1生成

列出环回免除的 AppContainer

[1] -----------------------------------------------------------------
    名称: AppContainer NOT FOUND
    SID:  S-1-15-2-883788003-1897955942-3642183005-638760255-2249287259-3707616651-3249579104

[2] -----------------------------------------------------------------
    名称: AppContainer NOT FOUND
    SID:  S-1-15-2-3624051433-2125758914-1423191267-1740899205-1073925389-3782572162-737981194-4043415302-551583165-304772019-4009825106

[3] -----------------------------------------------------------------
    名称: 001
    SID:  S-1-15-2-3624051433-2125758914-1423191267-1740899205-1073925389-3782572162-737981194-4256926629-1688279915-2739229046-3928706915