我有一个MAUI应用程序,我想在Windows上测试(它在后台使用WinUI 3)。然而,它使用了一个带有很长路径文件的库,我无法部署(reported Github issue)。我不能再缩短文件夹,因为它在一个更大的项目结构中。
我想用Junction来缩短它:
New-Item New-Item -ItemType Junction -Path "D:\MyLongProjectPath" -Target "D:\Temp\Proj"
字符串
构建是成功的,但在部署时,我遇到了另一个问题:
DEP0700:注册应用程序失败。[0x80073CF0]错误0x800701C0:从位置AppxManifest.xml打开文件失败,错误为:无法遍历路径,因为它包含不受信任的装入点。
我如何使一个junction“可信”,或者允许从一个不可信的挂载点注册它?
注意:我只需要这样做的测试,它不是生产。
1条答案
按热度按时间krcsximq1#
您遇到的问题与https://unit42.paloaltonetworks.com/junctions-windows-redirection-trust-mitigation/有关。
一种解决方案是让一些系统进程为您创建这个连接点。请注意,仅仅运行提升的应用程序可能是不够的;我所说的系统进程是指一些能够在系统进程下创建一个点的内核模式代码。我们最近刚刚为CBFS Connect产品添加了一个类似的解决方案来解决这个“问题”(实际上是一种安全措施,但对我们的客户来说这是一个问题)。
你可以尝试做的测试是使用CBFS Filter(试用版就足够了)动态地将一个请求重定向到D:\Temp\Proj* 到D:\MyLongProjectPath。为此,你可以添加一个重定向请求的重解析规则。CBFS Filter不使用磁盘上的重解析点,只是将STATUS_REPARSE返回到文件打开请求。我认为这应该足以防止操作系统由于上述缓解措施而阻塞请求。
IIRC中没有这样的重解析示例,但是操作很简单--一个对AddReparseRule的调用和另一个启动操作的调用(但是你需要安装CBFS Filter附带的驱动程序,因为它会完成所有繁重的工作)。