那么,来看一下吧。上文中没有出现请求弹窗,这意味着isolatedWin32-promptForAccess
不可用。
忽略那些错误信息,原因跟上文相同。给予了网络权限的情况下可以访问网络。
而不能的情况下就不能。看起来和预览版系统行为是一致的。可能这在普通的 msix 上就可用。Baka632
看看别的吧。
PS C:\Windows\System32> Get-Service
Get-Service: Cannot open Service Control Manager on computer '.'. This operation might require other privileges.
PS C:\Windows\System32> Get-Content "C:\Users\DaleZ\AppData\Local\Microsoft\Edge\User Data\test.txt"
Get-Content: Access to the path 'C:\Users\DaleZ\AppData\Local\Microsoft\Edge\User Data\test.txt' is denied.
在上述内容中,我同样模拟了获取计算机的关键信息操作,不过令人高兴的是,即便功能未成形,但它成功地拦截了这些非法操作。
接下来,我试着移除了isolatedWin32-volumeRootMinimal
权限,结果——
PS Temp:\> cd C:
cd: The term 'Set-Location' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
PS Temp:\> dir
dir: The term 'Get-ChildItem' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
PS Temp:\> add-appxpackage
add-appxpackage: The term 'add-appxpackage' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
PS Temp:\> C:
Set-Location: The term 'Set-Location' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
PS Temp:\> cmd
Microsoft Windows [版本 10.0.22631.3007]
(c) Microsoft Corporation。保留所有权利。
C:\Windows\System32>cd C:
拒绝访问。
C:\Windows\System32>dir
拒绝访问。
C:\Windows\System32>cd ..
C:\Windows>cd ..
拒绝访问。
C:\Windows>notepad
'notepad' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
C:\Windows>dir
拒绝访问。
由于限制了 Powershell 对磁盘根目录哪怕是最基本的访问权限,Powershell 的关键模块甚至都已经无法加载,一大堆正常的命令都无法执行。我们仍然可以调用命令提示符,但寻求外援也是无能为力的……
吗?🤪事实上,命令提示符有一个屡试不爽的自动提权命令,我们试试看能不能以此跳出盒子。
不能!而且这没有让你联想到运行 MEMZ 的时候吗?看来是在提权期间访问失败了。不仅如此,在开始菜单里面也无法手动授予管理员权限(普通 msix 似乎是可以的)。
虽然通过unvirtualizedResources
权限,Powershell 能够逃出虚拟文件系统,但也仅限于“看到”文件的存在,相比普通版 msix 可读又可写的设了跟没设的限制,isolation 使程序来到一个可望而不可即的高度:只可以看到部分文件夹中有什么文件,但不可读也不可写。再者,这个权限使程序写 AppData 的能力都没有了,可能是因为 isolation 覆盖了这一行为。去掉这个权限即可正常在虚拟文件夹中进行读写。
然而,对其它文件的访问需要请求弹窗,但未能实现此功能,也就是说,对文件的访问总是失败。但是,可以授予应用一个旧权限来弥补,尽管那样不会弹窗。这不影响本来就由用户触发的操作,这意味着你打开文件对话框时,你看得见所有内容,应用和你都看得见由你选定的内容。
总结:在当前最新稳定版本(Windows 11 23H2)中,部分支持 isolation 功能,除了应用悄悄访问文件你永远也无法知道,其它主要功能都基本可用。
有时间的话,我会重测一遍 QQ 以测试一些小功能,目前除了它可能无法写到“文档”文件夹以外,其它的应该没什么问题。(偷饼干如果出错崩溃纯属你自己造孽!)