Windows 沙盒配置

Windows 沙盒支持简单的配置文件,这些文件为 Sandbox 提供最少的自定义参数集。 此功能可用于Windows 10版本 18342 或Windows 11。 Windows 沙盒配置文件的格式设置为 XML,并通过.wsb文件扩展名与 Sandbox 关联。

配置文件使用户能够控制Windows 沙盒的以下方面:

  • **vGPU (虚拟化 GPU) **:启用或禁用虚拟化 GPU。 如果禁用 vGPU,沙盒将使用 Windows 高级光栅化平台 (WARP) 。
  • 网络:在沙盒中启用或禁用网络访问。
  • 映射的文件夹:使用 取或 入权限从主机共享文件夹。 公开主机目录可能会允许恶意软件影响系统或窃取数据。
  • 登录命令:启动Windows 沙盒时执行的命令。
  • 音频输入:将主机的麦克风输入共享到沙盒中。
  • 视频输入:将主机的网络摄像头输入共享到沙盒中。
  • 受保护的客户端:将 RDP 会话上增强的安全设置放置到沙盒。
  • 打印机重定向:将打印机从主机共享到沙盒中。
  • 剪贴板重定向:与沙盒共享主机剪贴板,以便可以来回粘贴文本和文件。
  • 内存(以 MB 为单位):要分配给沙盒的内存量(以兆字节为单位)。

创建配置文件

若要创建配置文件,请执行以下操作:

  1. 打开纯文本编辑器或源代码编辑器 (,例如记事本、Visual Studio Code等)

  2. 插入以下行:

    <Configuration>
    </Configuration>
    
  3. 在两行之间添加适当的配置文本。 有关详细信息,请参阅正确的语法和下面的示例。

  4. 保存具有所需名称的文件,但请确保其文件名扩展名为 .wsb。 在记事本中,应将文件名和扩展插件括在双引号内,例如 "My config file.wsb"

使用配置文件

若要使用配置文件,请双击它,根据其设置开始Windows 沙盒。 也可以通过命令行调用它,如下所示:

C:\Temp> MyConfigFile.wsb 

关键字、值和限制

vGPU

启用或禁用 GPU 共享。

<vGPU>value</vGPU>

支持的值:

  • 启用:在沙盒中启用 vGPU 支持。
  • 禁用:在沙盒中禁用 vGPU 支持。 如果设置此值,沙盒将使用软件呈现,这可能比虚拟化 GPU 慢。
  • 默认 此值是 vGPU 支持的默认值。 目前,此默认值表示已禁用 vGPU。

备注

启用虚拟化 GPU 可能会增加沙盒的攻击面。

网络

启用或禁用沙盒中的网络。 可以禁用网络访问,以减少沙盒暴露的攻击面。

<Networking>value</Networking>

支持的值:

  • 禁用:在沙盒中禁用网络。
  • 默认值:此值是网络支持的默认值。 此值通过在主机上创建虚拟交换机来启用网络,并通过虚拟 NIC 将沙盒连接到它。

备注

启用网络可以向内部网络公开不受信任的应用程序。

映射的文件夹

一个文件夹数组,每个文件夹表示主机上将共享到指定路径的沙盒中的位置。 目前不支持相对路径。 如果未指定路径,文件夹将映射到容器用户的桌面。

<MappedFolders>
  <MappedFolder> 
    <HostFolder>absolute path to the host folder</HostFolder> 
    <SandboxFolder>absolute path to the sandbox folder</SandboxFolder> 
    <ReadOnly>value</ReadOnly> 
  </MappedFolder>
  <MappedFolder>  
    ...
  </MappedFolder>
</MappedFolders>

HostFolder:指定要共享到沙盒中的主机上的文件夹。 该文件夹必须已存在于主机上,否则容器将无法启动。

沙盒文件夹:指定要将文件夹映射到的沙盒中的目标。 如果文件夹不存在,则会创建该文件夹。 如果未指定沙盒文件夹,文件夹将映射到容器桌面。

ReadOnly:如果 为 true,则强制从容器内对共享文件夹进行只读访问。 支持的值: true/false。 默认值为 false

备注

从主机映射的文件和文件夹可能会被沙盒中的应用入侵,或者可能会影响主机。

登录命令

指定在沙盒登录后自动调用的单个命令。 沙盒中的应用在容器用户帐户下运行。 容器用户帐户应为管理员帐户。

<LogonCommand>
  <Command>command to be invoked</Command>
</LogonCommand>

命令:容器中要在登录后执行的可执行文件或脚本的路径。

备注

尽管非常简单的命令 ((例如启动可执行文件或脚本) )有效,但应将涉及多个步骤的更复杂的方案放入脚本文件中。 此脚本文件可通过共享文件夹映射到容器,然后通过 LogonCommand 指令执行。

音频输入

启用或禁用沙盒的音频输入。

<AudioInput>value</AudioInput>

支持的值:

  • 启用:在沙盒中启用音频输入。 如果设置了此值,沙盒将能够接收用户的音频输入。 使用麦克风的应用程序可能需要此功能。
  • 禁用:禁用沙盒中的音频输入。 如果设置了此值,沙盒将无法接收用户的音频输入。 使用麦克风的应用程序可能无法在此设置中正常运行。
  • 默认值:此值是音频输入支持的默认值。 目前,此默认值表示已启用音频输入。

备注

向容器公开主机音频输入可能会有安全影响。

视频输入

启用或禁用沙盒的视频输入。

<VideoInput>value</VideoInput>

支持的值:

  • 启用:在沙盒中启用视频输入。
  • 禁用:在沙盒中禁用视频输入。 使用视频输入的应用程序可能无法在沙盒中正常工作。
  • 默认值:此值是视频输入支持的默认值。 目前,此默认值表示已禁用视频输入。 使用视频输入的应用程序可能无法在沙盒中正常工作。

备注

向容器公开主机视频输入可能会产生安全影响。

受保护的客户端

将更多安全设置应用到沙盒远程桌面客户端,减少其攻击面。

<ProtectedClient>value</ProtectedClient>

支持的值:

  • 启用:在受保护的客户端模式下运行 Windows 沙盒。 如果设置了此值,沙盒将运行并启用额外的安全缓解措施。
  • 禁用:在标准模式下运行沙盒,而无需额外的安全缓解措施。
  • 默认值:此值是受保护客户端模式的默认值。 目前,此默认值表示沙盒未在受保护的客户端模式下运行。

备注

此设置可能会限制用户在沙盒中复制/粘贴文件的能力。

打印机重定向

启用或禁用从主机到沙盒的打印机共享。

<PrinterRedirection>value</PrinterRedirection>

支持的值:

  • 启用:启用将主机打印机共享到沙盒。
  • 禁用:在沙盒中禁用打印机重定向。 如果设置了此值,沙盒将无法从主机查看打印机。
  • 默认值:此值是打印机重定向支持的默认值。 目前,此默认值表示已禁用打印机重定向。

剪贴板重定向

启用或禁用与沙盒共享主机剪贴板。

<ClipboardRedirection>value</ClipboardRedirection>

支持的值:

  • 禁用:在沙盒中禁用剪贴板重定向。 如果设置了此值,则会限制在沙盒中复制/粘贴。
  • 默认值:此值是剪贴板重定向的默认值。 目前, 默认情况下允许在主机和沙盒之间复制/粘贴。

内存(以 MB 为单位)

指定沙盒可以使用 MB (MB) 的内存量。

<MemoryInMB>value</MemoryInMB>

如果指定的内存值不足以启动沙盒,则会自动将其增加到所需的最小量。

示例 1

以下配置文件可用于轻松测试沙盒内下载的文件。 若要实现此测试,将禁用网络和 vGPU,并允许沙盒对共享下载文件夹进行只读访问。 为方便起见,登录命令会在沙盒中打开下载文件夹。

Downloads.wsb

<Configuration>
  <VGpu>Disable</VGpu>
  <Networking>Disable</Networking>
  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\Users\Public\Downloads</HostFolder>
      <SandboxFolder>C:\Users\WDAGUtilityAccount\Downloads</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
  </MappedFolders>
  <LogonCommand>
    <Command>explorer.exe C:\users\WDAGUtilityAccount\Downloads</Command>
  </LogonCommand>
</Configuration>

示例 2

以下配置文件在沙盒中安装Visual Studio Code,这需要稍微复杂的 LogonCommand 安装。

两个文件夹映射到沙盒中;第一个 (SandboxScripts) 包含 VSCodeInstall.cmd,它将安装并运行Visual Studio Code。 (CodingProjects) 的第二个文件夹假定包含开发人员想要使用Visual Studio Code修改的项目文件。

由于Visual Studio Code安装程序脚本已映射到沙盒中,LogonCommand 可以引用它。

VSCodeInstall.cmd

REM Download Visual Studio Code
curl -L "https://update.code.visualstudio.com/latest/win32-x64-user/stable" --output C:\users\WDAGUtilityAccount\Desktop\vscode.exe

REM Install and run Visual Studio Code
C:\users\WDAGUtilityAccount\Desktop\vscode.exe /verysilent /suppressmsgboxes

VSCode.wsb

<Configuration>
  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\SandboxScripts</HostFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
    <MappedFolder>
      <HostFolder>C:\CodingProjects</HostFolder>
      <ReadOnly>false</ReadOnly>
    </MappedFolder>
  </MappedFolders>
  <LogonCommand>
    <Command>C:\Users\WDAGUtilityAccount\Desktop\SandboxScripts\VSCodeInstall.cmd</Command>
  </LogonCommand>
</Configuration>