引子
当在Windows沙盒中打开未签名的可执行文件时会提示如下内容:
Search for app in the Store?
You need to install an app for this task.
Would you like to search for one in the Store?
并且无论点击Yes或No都无法继续执行。
原因
由于文件未签名,Windows想要通过微软商店(Microsoft Store)安装Windows Smartscreen,但Windows沙盒中并没有微软商店,因此无法继续执行。
解决方案
禁用沙盒中的Windows Smartscreen即可,在Windows沙盒中的PowerShell(在开始菜单上右键选择Windows PowerShell)执行以下脚本:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "EnableSmartScreen" -Type DWord -Value 0
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\PhishingFilter")) {
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\PhishingFilter" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\PhishingFilter" -Name "EnabledV9" -Type DWord -Value 0
配置Windows沙盒使其每次启动时调用脚本禁用Windows Smartscreen
(要求Windows 10 build 18342或Windows 11)为了方便使用,可以配置Windows沙盒使其在启动时自动运行禁用Windows Smartscreen脚本。
将上面的脚本保存为文件,如命名为disable_windows_smartscreen.ps1
并保存在D:\sandbox
。
在配置中将脚本所在文件夹映射到Windows沙盒中,并在启动时使用PowerShell执行这个脚本:
<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>D:\sandbox</HostFolder>
<SandboxFolder>C:\sandbox</SandboxFolder>
<ReadOnly>True</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>powershell.exe -ExecutionPolicy Bypass -File C:\sandbox\disable_windows_smartscreen.ps1</Command>
</LogonCommand>
</Configuration>
将这个文件保存为.wsb
后缀,双击运行即可。
参考
Windows sandbox won’t open executables. (“You need to install an app for this task”)