前言

本文是 Windows 沙箱技术全景 的实战篇之一。使用 Windows Sandbox(WSB)的 .wsb 配置文件,零代码搭建一个定制化沙箱环境。

环境准备

1. 检查系统要求

要求说明
Windows 版本Pro / Enterprise / Education(不支持 Home)
架构amd64 / arm64
虚拟化BIOS 中开启 VT-x / AMD-V
内存至少 4GB
磁盘空间至少 1GB 空闲

2. 启用 Windows Sandbox

方法一:GUI

设置 → 应用 → 可选功能 → 更多 Windows 功能 → 勾选「Windows Sandbox」→ 重启

方法二:PowerShell(管理员)

powershell
Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -All -Online
# 执行后重启电脑

方法三:DISM

cmd
dism /online /Enable-Feature /FeatureName:Containers-DisposableClientVM -All

3. 验证

开始菜单搜索「Windows Sandbox」,能找到并启动即成功。


.wsb 配置文件详解

WSB 使用 XML 格式的 .wsb 文件进行配置。双击即可启动定制化沙箱。

完整配置项

xml
<Configuration>
  <!-- 虚拟 GPU -->
  <vGPU>Enable</vGPU>           <!-- Enable / Disable / Default -->
 
  <!-- 网络 -->
  <Networking>Enable</Networking> <!-- Enable / Disable / Default -->
 
  <!-- 映射宿主文件夹 -->
  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\SandboxDemo\Tools</HostFolder>
      <SandboxFolder>C:\Tools</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
    <MappedFolder>
      <HostFolder>C:\SandboxDemo\Shared</HostFolder>
      <SandboxFolder>C:\Shared</SandboxFolder>
      <ReadOnly>false</ReadOnly>
    </MappedFolder>
  </MappedFolders>
 
  <!-- 启动时自动执行的命令 -->
  <LogonCommand>
    <Command>cmd.exe /k "echo Welcome to Sandbox Demo & C:\Tools\init.bat"</Command>
  </LogonCommand>
 
  <!-- 音频输入 -->
  <AudioInput>Disable</AudioInput>
 
  <!-- 视频输入(摄像头) -->
  <VideoInput>Disable</VideoInput>
 
  <!-- 受保护的 RDP 客户端 -->
  <ProtectedClient>Enable</ProtectedClient>
 
  <!-- 打印机重定向 -->
  <PrinterRedirection>Disable</PrinterRedirection>
 
  <!-- 剪贴板重定向 -->
  <ClipboardRedirection>Enable</ClipboardRedirection>
 
  <!-- 内存上限(MB) -->
  <MemoryInMB>2048</MemoryInMB>
</Configuration>

配置项说明

标签作用默认值
<vGPU>虚拟 GPU 加速Enable
<Networking>网络访问(使用 Hyper-V 默认交换机)Enable
<MappedFolders>宿主文件夹映射到沙箱
<LogonCommand>启动时自动执行一条命令
<AudioInput>麦克风输入Enable
<VideoInput>摄像头输入Disable
<ProtectedClient>RDP 安全增强Disable
<PrinterRedirection>打印机共享Disable
<ClipboardRedirection>剪贴板共享Enable
<MemoryInMB>内存上限4096

⚠️ <LogonCommand> 只能执行一条命令。复杂逻辑请写成脚本,映射到沙箱后调用。


实战 Demo:安全分析环境

场景

搭建一个用于分析可疑文件的安全沙箱:

  • 网络禁用(防止恶意软件外连)
  • 工具文件夹只读映射(分析工具不被篡改)
  • 输出文件夹可写(保存分析结果)
  • 启动时自动运行分析脚本

步骤 1:准备宿主目录

powershell
mkdir C:\SandboxDemo\Tools
mkdir C:\SandboxDemo\Output
mkdir C:\SandboxDemo\Scripts

步骤 2:准备启动脚本

C:\SandboxDemo\Scripts\init.bat

batch
@echo off
echo ========================================
echo  Windows Sandbox - 安全分析环境
echo ========================================
echo.
echo 时间: %date% %time%
echo.
echo 已映射目录:
echo   C:\Tools    - 分析工具(只读)
echo   C:\Output   - 分析结果(可写)
echo   C:\Scripts  - 脚本(只读)
echo.
echo 网络状态: 已禁用
echo.
echo 可用工具:
where.exe procmon.exe 2>nul && echo   - Process Monitor: OK
where.exe procexp.exe 2>nul && echo   - Process Explorer: OK
where.exe strings.exe 2>nul && echo   - Strings: OK
echo.
echo 将可疑文件放入 C:\Output 后执行分析。
echo ========================================
cmd.exe /k

步骤 3:编写 .wsb 文件

C:\SandboxDemo\SafetyAnalysis.wsb

xml
<Configuration>
  <vGPU>Disable</vGPU>
  <Networking>Disable</Networking>
  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\SandboxDemo\Tools</HostFolder>
      <SandboxFolder>C:\Tools</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
    <MappedFolder>
      <HostFolder>C:\SandboxDemo\Output</HostFolder>
      <SandboxFolder>C:\Output</SandboxFolder>
      <ReadOnly>false</ReadOnly>
    </MappedFolder>
    <MappedFolder>
      <HostFolder>C:\SandboxDemo\Scripts</HostFolder>
      <SandboxFolder>C:\Scripts</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
  </MappedFolders>
  <LogonCommand>
    <Command>cmd.exe /c C:\Scripts\init.bat</Command>
  </LogonCommand>
  <AudioInput>Disable</AudioInput>
  <VideoInput>Disable</VideoInput>
  <ProtectedClient>Enable</ProtectedClient>
  <PrinterRedirection>Disable</PrinterRedirection>
  <ClipboardRedirection>Enable</ClipboardRedirection>
  <MemoryInMB>4096</MemoryInMB>
</Configuration>

步骤 4:启动

双击 SafetyAnalysis.wsb,或在命令行中:

cmd
C:\SandboxDemo> SafetyAnalysis.wsb

步骤 5:验证

验证项预期结果
沙箱启动几秒内出现桌面窗口
init.bat 自动执行命令行窗口显示欢迎信息
网络禁用ping 8.8.8.8 失败
Tools 只读尝试在 C:\Tools 创建文件 → 拒绝
Output 可写C:\Output 创建文件成功,宿主 C:\SandboxDemo\Output 同步可见
关闭沙箱所有内容销毁(Output 中的文件因映射而保留在宿主)

实战 Demo:开发环境隔离

场景

为不同项目维护独立的开发环境,互不干扰。

DevEnv-Python.wsb

xml
<Configuration>
  <vGPU>Enable</vGPU>
  <Networking>Enable</Networking>
  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\Projects\MyApp</HostFolder>
      <SandboxFolder>C:\Project</SandboxFolder>
      <ReadOnly>false</ReadOnly>
    </MappedFolder>
  </MappedFolders>
  <LogonCommand>
    <Command>powershell.exe -NoExit -Command "cd C:\Project; echo 'Dev Sandbox Ready'; python --version"</Command>
  </LogonCommand>
  <MemoryInMB>8192</MemoryInMB>
</Configuration>

💡 沙箱内没有预装 Python,需要在 LogonCommand 中加入安装脚本,或通过映射文件夹传入便携版。


注意事项

  1. 网络安全:网络默认开启,沙箱可通过 Hyper-V 虚拟交换机访问内网。分析可疑文件时务必 <Networking>Disable</Networking>
  2. 文件安全:可写映射的文件夹,沙箱内的修改会持久化到宿主。恶意软件可能通过映射文件夹影响宿主
  3. 单实例限制:同时只能运行一个 Windows Sandbox 实例
  4. 无持久化:沙箱关闭后所有非映射内容消失。需要保留的数据必须放在映射文件夹或通过脚本上传
  5. Windows 11 22H2+:沙箱内重启可保持状态(Restart 命令),但完全关闭后仍然丢失

系列文章导航

  1. Windows 沙箱技术全景
  2. Windows 沙箱 Demo - WSB 配置实战(本文)
  3. Windows 沙箱 Demo - AppContainer 编程
  4. Windows 沙箱 Demo - Job Object 进程管控

📅 创建时间:2026-08-12 🏷️ 分类:Windows 安全 / 沙箱技术