从不受信任的装载点部署和测试 WinUI3 应用

Deploy and test WinUI3 app from an untrusted mount point

提问人:Luke Vo 提问时间:11/16/2023 最后编辑:Luke Vo 更新时间:11/16/2023 访问量:40

问:

我有一个 MAUI 应用,我想在 Windows 上测试它(它在后台使用 WinUI3)。但是,它使用了一个具有很长路径文件的库,我无法部署(报告了 Github 问题)。我不能再缩短文件夹了,因为它位于更大的项目结构中。

我想过用 Junction 来缩短它:

New-Item New-Item -ItemType Junction -Path "D:\MyLongProjectPath" -Target "D:\Temp\Proj"

构建成功,但在部署时,我遇到了另一个问题:

DEP0700:应用注册失败。[0x80073CF0] 错误 0x800701C0:从位置打开文件:AppxManifest.xml失败,出现错误:无法遍历路径,因为它包含不受信任的装入点。

如何使联结“受信任”,或允许从不受信任的挂载点注册它?

注意:我只需要这样做用于测试,而不是用于生产。

文件系统 WinUI-3 Windows-11 联结

评论


答:

1赞 Eugene Mayevski 'Callback 11/16/2023 #1

您面临的问题与 https://unit42.paloaltonetworks.com/junctions-windows-redirection-trust-mitigation/ 有关。

一种解决方案是让一些系统进程为您创建此连接点。请注意,仅仅运行提升的应用程序可能还不够;我所说的系统进程,是指一些能够在系统进程下创建一个点的内核模式代码。我们最近刚刚为CBFS Connect产品添加了针对此“问题”(实际上是一种安全措施,但对我们的客户来说这是一个问题的)的类似解决方法。

您可以尝试使用CBFS筛选器将转到D:\Temp\Proj*的请求动态重定向到D:\MyLongProjectPath(试用版就足够了)。为此,您可以添加一个重新分析规则,该规则将重定向请求。CBFS 过滤器不使用磁盘上的重新分析点,而只是将STATUS_REPARSE返回到文件打开请求。我认为这应该足以防止操作系统由于上述缓解措施而阻止请求。

IIRC,没有用于此类重新解析的示例,但操作是微不足道的 - 对 AddReparseRule 的调用和另一个启动操作的调用(您需要安装 CBFS 过滤器附带的驱动程序,因为它会完成所有繁重的工作)。

评论

1赞 Luke Vo 11/18/2023
感谢您解释问题。我试图得到你建议的解决方案,但结果太麻烦了。现在,有问题的项目很简单,我只是将其复制到根目录以缩短路径。这很不方便,但现在对我有用。