前言
本文是 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 -All3. 验证
开始菜单搜索「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 中加入安装脚本,或通过映射文件夹传入便携版。
注意事项
- 网络安全:网络默认开启,沙箱可通过 Hyper-V 虚拟交换机访问内网。分析可疑文件时务必
<Networking>Disable</Networking> - 文件安全:可写映射的文件夹,沙箱内的修改会持久化到宿主。恶意软件可能通过映射文件夹影响宿主
- 单实例限制:同时只能运行一个 Windows Sandbox 实例
- 无持久化:沙箱关闭后所有非映射内容消失。需要保留的数据必须放在映射文件夹或通过脚本上传
- Windows 11 22H2+:沙箱内重启可保持状态(
Restart命令),但完全关闭后仍然丢失
系列文章导航
- Windows 沙箱技术全景
- Windows 沙箱 Demo - WSB 配置实战(本文)
- Windows 沙箱 Demo - AppContainer 编程
- Windows 沙箱 Demo - Job Object 进程管控
📅 创建时间:2026-08-12 🏷️ 分类:Windows 安全 / 沙箱技术