当前位置: 代码网 > 科技>操作系统>Windows > 无法访问localhost怎么办? Window解决UWP应用本地回环限制

无法访问localhost怎么办? Window解决UWP应用本地回环限制

2024年08月12日 Windows 我要评论
关于 window 的 uwp 应用本地回环限制以及限制解除方案1. uwp 应用默认禁止本地回环uwp 应用在默认的情况下,禁止访问本地的 localhost(这被称做本地回环 loopback)。

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

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

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

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

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: 移除所有安装的应用的豁免

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="$_"}

new powershell core:

(get-appxpackage -allusers).packagefamilyname | foreach-object {checknetisolation.exe loopbackexempt -a -n="$_"}

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

来自 fiddler 的 enable loopback utility 或开源项目 loopback exemption manager 的这两个工具提供了很方便的图形化方式来对安装的 uwp 应用进行 loopback 豁免。

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

我们可以知道,开源工具的作者从 fiddler 那里借鉴了 p/invokes 的方式获取 api,而所 invoke 的 api 主要来自于 firewallapi.dll,这个 dll 提供了很多与 uwp loopback 豁免相关的实用方法。

我们继续使用 vs2022 的 dev shell 对官方的 checknetisolation.exe 进行 dll 依赖分析(需要安装 vs 2022):

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com