Windows Sandbox 隔离全家桶

  • 使用 windows sandbox 隔离微信/qq/迅雷/百度网盘….

  • 资料来源:

    https://docs.microsoft.com/en-us/powershell/module/international/set-winuserlanguagelist?view=windowsserver2019-ps
    https://jdhitsolutions.com/blog/powershell/7621/doing-more-with-windows-sandbox/

  • 更新

    1
    2021.09.30 初始

导语

自从 N 年前,开发环境因为 QQ 崩溃,重装耗时 1 个星期以后,全家桶应用就告别我电脑了.但是人在江湖又不得不用..

这是 Windows Sandbox 下使用 微信/qq/迅雷/等等的总结帖.

正文

需求

  • 正常运行 微信/qq/迅雷(废话)
  • 尽量持久化用户数据.

Windows Sandbox

Windows Sandbox

  • 可以运行起一个与宿主机隔离的 windows 环境.
  • 基于 hyper-v ,启动比虚拟机快很多,这也是我选择 Windows Sandbox 而不是用虚拟机的原因
  • 无法直接持久化文件,每次启动都会是一个全新的环境.
  • 全局只能有一个实例.

更多介绍请参考官方文档.

ps: Windows Sandbox 也支持 vgpu,也就是说除了 fps 类,其他游戏也是能正常调用 gpu 运行的.

windows sandbox 支持 配置文件定制,这也是这篇文章核心的内容.官方文档

全家桶应用

一般就是 微信 QQ 迅雷 和 百度网盘 了,你可以不用,可以抵不住周围人都在用.

适用于 sandbox 的是全家桶应用的绿色版.

微信/QQ 可以参考 官方绿色版(提取 win32 转制应用)

迅雷

  • 目前个人下到的极速版 U享版,几乎都没一点速度,只能换到迅雷11.
  • 目前个人用的是 迅雷11绿色去广告精简版,扔到 virustotal 没有报毒.

百度网盘,个人已经弃用.有需要也可以到 yeyulingfeng下到,请注意 使用前扔到 virustotal看看.

持久化数据

微信:

  • C:\Users\WDAGUtilityAccount\AppData\Roaming\Tencent
  • C:\Users\WDAGUtilityAccount\Documents

QQ:

  • C:\Users\WDAGUtilityAccount\Documents

在配置文件 保存上面两个路径到宿主机就行.

QQ 运行还单独需要挂载 C:\Windows\SysWOW64

迅雷就没有持久化数据的必要了.

最好还是单独挂载一下桌面文件夹,放一些快捷方式.

中文输入法

即使宿主机是中文, sandbox 输入法也没有中文,微信/qq 略显不变.

中文输入法可以手动找回在 设置->时间和语言->语言: 添加语言->添加中文简体

powershell 可以通过 Set-WinUserLanguageList 添加语言.参考 Set-WinUserLanguageList

新建脚本文件 addzh-cn.ps1

1
2
3
4
5
$LanguageList = Get-WinUserLanguageList

$LanguageList.Add("zh-Hans-CN")

Set-WinUserLanguageList $LanguageList -Force

sandbox 的环境还是不能直接执行 ps1,先设置脚本执行权限.这一块写成 cmd.sandbox-setup.cmd,假设 addzh-cn.ps1 挂载到了 C:\scripts\addzh-cn.ps1

powershell.exe -command "&{Set-ExecutionPolicy RemoteSigned -force}"

powershell.exe -file C:\scripts\addzh-cn.ps1>)

sandbox 配置文件支持执行脚本 sandbox-setup.cmd

配置文件

最后得到了下面的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\Users\xx\Win\Desktop</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\Desktop</SandboxFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
<MappedFolder>
<HostFolder>C:\Users\xx\Win\scripts</HostFolder>
<SandboxFolder>C:\scripts</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
<MappedFolder>
<HostFolder>C:\Users\xx\Win\App</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\App</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
<MappedFolder>
<HostFolder>C:\Users\xx\Win\Data\Documents</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\Documents</SandboxFolder>
</MappedFolder>
<MappedFolder>
<HostFolder>C:\Users\xx\Win\Data\Tencent</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\AppData\Roaming\Tencent</SandboxFolder>
</MappedFolder>
<MappedFolder>
<HostFolder>C:\Windows\SysWOW64</HostFolder>
<SandboxFolder>C:\Windows\SysWOW64</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>C:\scripts\sandbox-setup.cmd</Command>
</LogonCommand>
</Configuration>

这样每次启动都有一个隔离的全家桶环境了