Windows 沙箱設定

Windows 沙箱 支援簡單的組態檔,可為沙箱提供最少的自定義參數集。 這項功能可以與組建 18342 或 Windows 11 Windows 10 搭配使用。 Windows 沙箱 組態檔會格式化為 XML,並透過.wsb擴展名與沙箱相關聯。

組態檔可讓使用者控制下列 Windows 沙箱 層面:

  • vGPU (虛擬化 GPU) :啟用或停用虛擬化 GPU。 如果停用 vGPU,沙箱會使用 Windows 進階點陣化平臺 (WARP) 。
  • 網路:啟用或停用沙箱內的網路存取。
  • 對應的資料夾:使用 取或 入許可權從主機共享資料夾。 公開主機目錄可能會允許惡意軟體影響系統或竊取數據。
  • 登入命令:當 Windows 沙箱 啟動時執行的命令。
  • 音訊輸入:將主機的麥克風輸入共用到沙盒中。
  • 影片輸入:將主機的網路攝影機輸入共用到沙盒中。
  • 受保護的用戶端:Places 在沙箱的遠端桌面通訊協定 (RDP) 會話上增加安全性設定。
  • 印表機重新導向:將印表機從主機共用到沙箱。
  • 剪貼簿重新導向:與沙盒共用主機剪貼簿,以便來回貼上文字和檔案。
  • 以 MB 為單位的記憶體:指派給沙箱的記憶體數量,以 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:指定主計算機上要共用到沙箱的資料夾。 資料夾必須已經存在於主機上,否則容器無法啟動。
  • SandboxFolder:指定沙箱中要對應資料夾的目的地。 如果資料夾不存在,則會加以建立。 如果未指定沙箱資料夾,則資料夾會對應至容器桌面。
  • ReadOnly:如果 為 true,則會從容器內強制執行共用資料夾的唯讀存取權。 支援的值:true false/。 默認為 false

注意

從主機對應的檔案和資料夾可能會遭到沙箱中的應用程式入侵,或可能會影響主機。

登入命令

指定在沙箱登入之後自動叫用的單一命令。 沙箱中的應用程式會在容器用戶帳戶下執行。 容器用戶帳戶應該是系統管理員帳戶。

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

命令:容器內將在登入後執行之可執行檔或腳本的路徑。

注意

雖然非常簡單的命令可以 (例如啟動可執行檔或腳本) ,但涉及多個步驟的更複雜案例應該放在腳本檔案中。 此腳本檔案可以透過共用資料夾對應至容器,然後透過 LogonCommand 指示詞執行。

音訊輸入

啟用或停用沙盒的音訊輸入。

<AudioInput>value</AudioInput>

支援的值:

  • 啟用:在沙箱中啟用音訊輸入。 如果設定此值,沙箱可以接收來自使用者的音訊輸入。 使用麥克風的應用程式可能需要這項功能。
  • 停用:停用沙盒中的音訊輸入。 如果設定此值,沙箱就無法接收使用者的音訊輸入。 使用麥克風的應用程式可能無法使用此設定正常運作。
  • 預設值:此值是音訊輸入支援的預設值。 目前,此預設值表示已啟用音訊輸入。

注意

將主機音訊輸入公開至容器可能會有安全性影響。

視訊輸入

啟用或停用沙盒的視訊輸入。

<VideoInput>value</VideoInput>

支援的值:

  • 啟用:在沙箱中啟用影片輸入。
  • 停用:停用沙箱中的視訊輸入。 使用視訊輸入的應用程式可能無法在沙盒中正常運作。
  • 預設值:此值是視訊輸入支持的預設值。 目前,此預設值表示已停用視訊輸入。 使用視訊輸入的應用程式可能無法在沙盒中正常運作。

注意

將主機視訊輸入公開至容器可能會有安全性影響。

受保護的用戶端

啟用受保護的用戶端模式時,沙箱會在 AppContainer隔離 執行環境內執行,以新增一層新的安全性界限。

AppContainer 隔離提供認證、裝置、檔案、網路、進程和窗口隔離。

<ProtectedClient>value</ProtectedClient>

支援的值:

  • 啟用:在受保護的用戶端模式中執行 Windows 沙箱。 如果設定此值,沙箱會在AppContainer隔離中執行。
  • 停用:在標準模式中執行沙箱,而不需要額外的安全性防護功能。
  • 預設值:此值是受保護用戶端模式的預設值。 目前,此預設值表示沙箱不會在受保護的用戶端模式中執行。

注意

此設定可能會限制使用者在沙箱中複製/貼上檔案的能力。

印表機重新導向

啟用或停用從主機到沙箱的印表機共用。

<PrinterRedirection>value</PrinterRedirection>

支援的值:

  • 啟用:啟用將主機印表機共用到沙箱。
  • 停用:停用沙盒中的印表機重新導向。 如果設定此值,沙箱就無法從主機檢視印表機。
  • 預設值:此值是印表機重新導向支持的預設值。 此預設值目前表示印表機重新導向已停用。

剪貼簿重新導向

啟用或停用與沙箱共用主機剪貼簿。

<ClipboardRedirection>value</ClipboardRedirection>

支援的值:

  • 啟用:啟用與沙箱共用主機剪貼簿。
  • 停用:停用沙盒中的剪貼簿重新導向。 如果設定此值,則會限制沙箱中的複製/貼上。
  • 預設值:此值是剪貼簿重新導向的預設值。 目前,默 允許在主機和沙盒之間複製/貼上。

以 MB 為單位的記憶體

指定沙箱可以使用 MB (MB) 記憶體數量。

<MemoryInMB>value</MemoryInMB>

如果指定的記憶體值不足以啟動沙箱,則會自動增加為所需的最小數量。

範例

範例 1

下列組態檔可用來輕鬆地測試沙箱內下載的檔案。 為了達到這項測試,網路和 vGPU 會停用,而且允許沙箱只讀存取共用下載資料夾。 為了方便起見,登入命令會在啟動時開啟沙箱內的 downloads 資料夾。

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

將 VS Code 下載到 downloads 資料夾,並從 downloads 資料夾執行安裝。

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

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

VSCode.wsb

<Configuration>
  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\SandboxScripts</HostFolder>
      <SandboxFolder>C:\Users\WDAGUtilityAccount\Downloads\sandbox</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
    <MappedFolder>
      <HostFolder>C:\CodingProjects</HostFolder>
      <SandboxFolder>C:\Users\WDAGUtilityAccount\Documents\Projects</SandboxFolder>
      <ReadOnly>false</ReadOnly>
    </MappedFolder>
  </MappedFolders>
  <LogonCommand>
    <Command>C:\Users\WDAGUtilityAccount\Downloads\sandbox\VSCodeInstall.cmd</Command>
  </LogonCommand>
</Configuration>

範例 3

下列組態檔會以登入命令執行 PowerShell 腳本,以交換左手使用者的主要滑鼠按鈕。

C:\sandbox 主機上的資料夾會對應至 C:\sandbox 沙箱中的資料夾,因此 SwapMouse.ps1 可以在沙箱組態檔中參考腳本。

SwapMouse.ps1

使用下列程式代碼建立 PowerShell 文稿,並將它儲存在 目錄中 C:\sandbox 作為 SwapMouse.ps1

[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>