我正在尝试使用CreateAppContainerProfile
来运行.NET 6应用程序。根据文档,api用于设置UWP应用程序使用的相同类型的沙箱。
现在,如果应用程序安装在c:\program文件下面,这是正确的,但如果它安装在其他地方,进程将失败;未能解析当前可执行文件的完整路径[可执行文件路径]";(代码0x80008085(
如果用户帐户对应用程序文件夹具有WRITE_DAC访问权限,我可以允许沙箱读取/列表目录访问,并且它可以再次工作,但如果用户帐户本身只有读取/列表/执行权限,我就不能这样做。
UWP沙盒的文档说,它们隐式地赋予沙盒对应用程序目录的读取访问权限(这是有道理的(,并且考虑到应用程序在c:\program文件中工作而不授予任何权限,这似乎在某种程度上也适用于这里,但我不明白为什么它在其他地方不起作用。在用户权限之外的文件夹上是否有一些与此处相关的安全设置?
关于这个功能的文档太少了,我不完全确定还能在哪里查找信息。
在这里回答我自己的问题:我确实想得太多了,因为我假设应用程序容器应该神奇地赋予应用程序目录读取/执行权限。
实际上,c:\program文件只是为特殊用户"提供了一个ACL;所有受限应用程序包";授予所有应用程序容器对整个目录树的读取/执行访问权限。
不幸的是,这意味着我显然没有一个很好的解决方案。在某个时刻,我的主进程必须被提升,以将ACL更改为应用程序目录,以便应用程序容器可以读取它,不可能只";inherit";主机进程对容器化进程的权限。
"能力;可以在创建appcontainer时使用,以允许访问某些预定义的功能(库、设备…(,或者基本上可以设置自定义功能,比如容器应该能够访问的一组目录,但这再次要求在设置功能时有权更改这些目录上的ACL。