关于 Window 的 UWP 应用本地回环限制以及限制解除方案


1. UWP 应用默认禁止本地回环

UWP 应用在默认的情况下,禁止访问本地的 Localhost(这被称做本地回环 Loopback)。

然而我们在开发、调试、正向代理等场景下,又不得不让 UWP 突破这一个限制。

参考链接:

  • MS Docs - App architecture
  • MS Docs - Deploying and debugging UWP apps

2. 官方限制解除工具 CheckNetIsolation.exe

这个工具位于 C:/Windows/System32/CheckNetIsolation.exe,它的功能为解除 UWP 的本地 Loopback 限制或者调试应用(本文仅介绍解除 Loopback 限制)。

./CheckNetIsolation.exe LoopbackExempt [operation] [-n=] [-p=]

常见用法:

  • -s: 查看已经取得 Loopback 豁免的应用列表
  • -a -p=[App Container SID] or -a -n=[App Container Name]: 添加应用豁免
  • -d -p=[App Container SID] or -d -n=[App Container Name]: 移除应用豁免
  • -c: 移除所有安装的应用的豁免

参考链接:

  • MS Docs - Enable loopback for network access
  • MS Docs - Enabling loopback for a UWP application

3. 如何获取所有安装应用的 SID

在注册表目录 HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings 即可取得所有 App 的 SID 列表。

通过结合 CMD 或者 Pwsh 的循环命令,即可自动化为所有已安装应用添加豁免:

CMD 命令:

FOR /F "tokens=11 delims=\" %p IN ('REG QUERY "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings"') DO CheckNetIsolation.exe LoopbackExempt -a -p=%p

Powershell 命令:

Get-ChildItem -Path Registry::"HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings\" -name | ForEach-Object {CheckNetIsolation.exe LoopbackExempt -a -p="$_"}

参考链接:
一般方法 - Windows 用户:UWP 应用回环问题


4. 其他便捷工具以及深层次分析

来自 Fiddler 的 Enable Loopback Utility 或开源项目 Loopback Exemption Manager 的这两个工具提供了很方便的图形化方式来对安装的 UWP 应用进行 Loopback 豁免。

深入研究后者工具以及类似工具的源代码,并参考作者提到的:

Thanks to Eric Lawrence for helping with the PInvokes.

注:提到的此人为 Fiddler 的作者

我们可以知道,开源工具的作者从 Fiddler 那里借鉴了 P/Invokes 的方式获取 API,而所 Invoke 的 API 主要来自于 FirewallAPI.dll,这个 dll 提供了很多与 UWP Loopback 豁免相关的实用方法。

我们继续使用 VS2022 的 Dev Shell 对官方的 CheckNetIsolation.exe 进行 dll 依赖分析(需要安装 VS 2022):

到这里我们便可以得知,无论是官方工具还是第三方工具的实现,都是调用 FirewallAPI.dll 提供的 API 来进行 Loopback 豁免的。

参考链接:

  • Stackoverflow - Can’t see localhost from UWP app
  • MS Docs - Platform Invoke (P/Invoke)

关于 Window 的 UWP 应用本地回环限制以及限制解除方案相关推荐

  1. linux 增加回环设备,linux命令练习:mount fdisk swap dd创建本地回环设备

    练习一 1.创建一个1G的分区,文件系统为ext4,卷标为MYDATA,块大小为1024,预留管理空间为磁盘 分区的3%,要求开机后制动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用. f ...

  2. 关于Linux的本地回环路由lo [127.0.0.1 ]

    最近 打算配开发板的socket通讯,打印环境变量发现却没有 127.0.0.1 / # ifconfig -a eth0 Link encap:Ethernet HWaddr 86:43:C9:A1 ...

  3. 本地回环地址127.0.0.1

    本地回环地址: 1.127.0.0.0整个网段中地址被称为本地回环地址. 2.是本机向自身发送通信的一个地址,用于本机不同进程之间的通信,不同于本机IP是用于与外部计算机通信. 3.用来检测本地网络协 ...

  4. 什么是lo本地回环?

    本地回环地址指的是以127开头的地址(127.0.0.1 – 127.255.255.254),通常用127.0.0.1来表示. 127.0.0.1,通常被称为本地回环地址(Loop back add ...

  5. Wireshark使用(捕获过滤器、显示过滤器、TCP交互抓包示例、抓取本地回环数据包等)

    1.捕获过滤器规则 1.1 作用   捕获过滤器在开始捕捉之前设置,用于从源头控制被过滤的包内容,仅符合规则的包会被捕获并记录进捕获日志文件. 1.2 语法规则 字段:[Protocol][Direc ...

  6. what is 本地回环

    Linux的本地回环接口是一种虚拟网络接口,通常表示为"lo",用于将数据包从同一主机的一个网络应用程序传输到另一个网络应用程序.当数据被发送到本地回环接口时,操作系统将数据包传递 ...

  7. mysql本地回环_路由器与本地回环地址的区别

    本地回环地址 127.0.0.1通常被称为本地回环地址(Loop back address),它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口. 在windows操作系统中也有相似的定义, ...

  8. windows 7中添加新硬件的两种方法(本地回环网卡)

    最近在windows7上使用VMwareWorkstation7玩一些实验,遇到需要配置不同网络的问题. 因为在windows2003server上习惯使用要本地回环网卡了,那就想着在Windows7 ...

  9. loopback 地址-本地回环地址

    前言:在IP地址中存在一些特殊地址,如下: (1)127.0.0.0~127.255.255.255.(2)0.0.0.0.(3)255.255.255.255 简单总结一下 127.0.0.0网段 ...

  10. linux添加loopback,教你CentOS7添加本地回环地址

    教你CentOS7添加本地回环地址 1.临时添加 ip addr add 10.10.1.1/32 dev lo:1 重启失效 2.永久添加 cd /etc/sysconfig/network-scr ...

最新文章

  1. java怎么打开_java开不了怎么办?java怎么打开?
  2. cs6 数据库mysql_能mysql内容
  3. 麦咭早教机器人_号外|「2019第一站」麦咭亮相香港国际授权展!
  4. 从 setNeedsLayout 说起
  5. 十六进制转double
  6. java速学_5分钟快速入门Java,不看真的可惜了
  7. Spring体系常用方法(一)
  8. springcloud的中文文档地址和中国社区
  9. 作者讲述《一个操作系统的实现》的故事
  10. 06_因果图法、判定表法、场景法
  11. mongoDB练习强化
  12. 升级Win11后,语言栏不在任务栏上
  13. Matlab求集合交集和并集
  14. Chrome插件-图片批量下载
  15. 【ACWing】1022. 宠物小精灵之收服
  16. EasyCVR实时录像接口教程:如何获取国标接入的摄像头设备录像?
  17. isis学不到looback口的路由_无线路由器怎么设置无线桥接 无线路由器设置无线桥接步骤【教程】...
  18. Serial Programming HOWTO——Linux 串口编程HOWTO
  19. c语言解析hex文件格式,HEX文件格式,ihex,hex解析
  20. LAMP一键安装包(Python版)

热门文章

  1. matlab在编辑器中写完了怎么运行,在编辑器中运行测试
  2. cad卸载不干净_还怕软件卸载不干净吗?试试它:Revo Uninstaller Pro
  3. 如何避开微信小程序的审核机制(实测有效)
  4. matlab画站点降雨分布,matlab 怎样做整个中国各个气象站点上的温度变化趋势
  5. RSSHub 的衍生项目 RSSHub Rader 安装构建 问题 Error: Cannot find module 'node-sass'
  6. 计算机内存储器和外存储器相比较,计算机中内存储器和外存储器有什么区别
  7. Unity 编辑器开发实战【Scene View】- UI Selector
  8. 你会用计算机吗怎么写,你会用computer吗
  9. 火星坐标 C语言,坐标
  10. 亚马逊测评账号关联因素有哪些?