Windows 沙盒示例配置文件
示例 1 - 映射文件夹并在沙盒中测试未知下载的文件
以下配置文件可用于在沙盒中轻松测试未知下载的文件。 为了实现此测试,将禁用网络和 vGPU,并允许沙盒从主机以只读的方式访问下载文件夹,并放置在沙盒中的“temp”文件夹中。 为方便起见,登录命令在启动时会打开沙盒中的下载文件夹。
Downloads.wsb
<Configuration>
<VGpu>Disable</VGpu>
<Networking>Disable</Networking>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\Users\Public\Downloads</HostFolder>
<SandboxFolder>C:\temp</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>explorer.exe C:\temp</Command>
</LogonCommand>
</Configuration>
示例 2 - 在沙盒中启动时安装Visual Studio Code
以下配置文件可在沙盒中安装 Visual Studio Code,这需要稍微复杂的 LogonCommand 设置。
两个文件夹映射到沙盒中;第一个 (SandboxScripts
) 包含VSCodeInstall.cmd,用于安装和运行Visual Studio Code。 假定第二个文件夹 (CodingProjects
) 包含开发人员希望使用Visual Studio Code修改的项目文件。
Visual Studio Code安装程序脚本已映射到沙盒后,<LogonCommand>
可以引用它。
VSCodeInstall.cmd
应在主机上的 C:\SandboxScripts
目录中创建此批处理文件。 它将 VS Code 下载到 temp
沙盒中的文件夹,并从文件夹运行安装 temp
。
REM Download Visual Studio Code
curl -L "https://update.code.visualstudio.com/latest/win32-x64-user/stable" --output C:\temp\vscode.exe
REM Install and run Visual Studio Code
C:\temp\vscode.exe /verysilent /suppressmsgboxes
VSCode.wsb
<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\SandboxScripts</HostFolder>
<SandboxFolder>C:\temp\sandbox</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
<MappedFolder>
<HostFolder>C:\CodingProjects</HostFolder>
<SandboxFolder>C:\temp\Projects</SandboxFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>C:\temp\sandbox\VSCodeInstall.cmd</Command>
</LogonCommand>
</Configuration>
示例 3 - 映射文件夹并运行 PowerShell 脚本作为登录命令
从 Windows 11 版本 24H2 开始,Windows 沙盒遵循主机系统的鼠标设置。 如果你使用的是较旧的内部版本,并且主机系统设置为使用左手鼠标,则必须在Windows 沙盒启动时在 Windows 沙盒 中手动应用这些设置。 或者,可以使用沙盒配置文件运行登录命令来交换鼠标设置。
在此示例中, C:\sandbox
主机上的文件夹映射到 C:\sandbox
沙盒中的 文件夹,因此 SwapMouse.ps1
可以在沙盒配置文件中引用脚本。
SwapMouse.ps1
使用以下代码创建 PowerShell 脚本,并将其作为 SwapMouse.ps1
保存在 C:\sandbox
目录中。
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
$SwapButtons = Add-Type -MemberDefinition @'
[DllImport("user32.dll")]
public static extern bool SwapMouseButton(bool swap);
'@ -Name "NativeMethods" -Namespace "PInvoke" -PassThru
$SwapButtons::SwapMouseButton(!([System.Windows.Forms.SystemInformation]::MouseButtonsSwapped))
SwapMouse.wsb
<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\sandbox</HostFolder>
<SandboxFolder>C:\sandbox</SandboxFolder>
<ReadOnly>True</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>powershell.exe -ExecutionPolicy Bypass -File C:\sandbox\SwapMouse.ps1</Command>
</LogonCommand>
</Configuration>