Windows Sandbox轻量级桌面开启及使用教程
前言
(毫无预兆地,)咱们今天来聊一聊Windows Sandbox。
俗话说王老板可能会迟到,但永远不会缺席。(大雾)
虽然功能出来有一个多月了,官方介绍和网上各种教程已经满天飞了,但一般都只是把官方给出的“特性”和“使用条件”(谷歌翻译一下然后一字不改地)搬运过来,所以我们今天还有不少东西可以聊。
之前在IT之家投稿文章的评论区,有些网友说我前言废话太多且和正文无实际联系,我们今天就尝试一下少说废话。
开聊。
正文
我们将按照以下顺序介绍:
- 首先简单介绍一下什么是Windows Sandbox,我们会贴出官方的表述和我们自己的见解([注:为便于理解会同时列出部分英文原文。]);
- 如何开启并使用Windows Sandbox,搬运官方给出的步骤,之后列出我们自己的图文过程;
- 感兴趣的小伙伴可以接下去看,我们将会以简单易懂的方式介绍Sandbox所使用的的技术。
- 讲完上述部分,再自然而然地引出,Windows Sandbox和一般虚拟机的区别。
一、什么是Windows Sandbox
1、定义
Sandbox直译是沙盘,也叫沙盒或沙箱,特点是可以推倒重来、抹去使用痕迹,对外部环境不产生任何影响。
Windows Sandbox正是为“安全地运行应用程序”而量身定制。用户可以在这个独立且封闭的临时桌面环境里,运行不受信任的软件比如未知的exe文件,不会对宿主机系统造成任何影响。因为 Windows Sandbox 中安装的任何软件以及做出的任何文件变动,下次启动时将不复存在。
按照惯例我们先看一下官方给的表述:
Windows Sandbox is a new lightweight desktop environment tailored for safely running applications in isolation.
(谷歌)翻译过来:
Windows Sandbox是一种新的轻量级桌面环境,专为安全运行应用程序而量身定制。
这其实是更加侧重于功能性的描述,把侧重点放在实质上,我们会得出以下描述:
Windows Sandbox是一款轻量级的、每次启动加载固定快照的虚拟机。
为照顾到大部分读者,这里先稍微解释一下,用到哪些技术或如何实现下文再谈。
- 轻量级:由于大部分文件与宿主机共用,所以大小被控制在100MB左右;
- 每次启动加载固定快照:关闭之后会清除所有使用痕迹,再次启动会回到全新的系统状态。相当于首次启动时就建立了快照,之后每次启动都自动加载这一快照。
- 虚拟机:官方介绍中这样说道:“Windows Sandbox的核心是一个轻量级虚拟机”。本质上是Hyper-V在本地创建一个虚拟机,然后通过远程桌面协议(RDP)传输画面
- 系统镜像则是深度精简过的几乎与宿主机相同的系统,且诊断数据设置与宿主机保持一致。
2、特征
官方介绍中已足够详细且易于理解。
Windows Sandbox具有以下属性:
- Windows的一部分 - 此功能所需的一切都随Windows 10 Pro和Enterprise一起提供。无需下载VHD!
- 原始 - 每次Windows Sandbox运行时,它都像Windows的全新安装一样干净
- 一次性 - 设备上没有任何东西; 关闭应用程序后,一切都将被丢弃
安全 - 使用基于硬件的虚拟化进行内核隔离,后者依靠Microsoft的虚拟机管理程序运行单独的内核,将Windows Sandbox与主机隔离开来 - 高效 - 使用集成的内核调度程序,智能内存管理和虚拟GPU
二、开启与使用教程
1、官方表述
使用该功能的先决条件
- Windows 10 Pro或Enterprise Insider内部版本18305或更高版本
- AMD64架构
- 在BIOS中启用虚拟化功能
- 至少4GB的RAM(推荐8GB)
- 至少1 GB的可用磁盘空间(建议使用SSD)
- 至少2个CPU内核(建议使用4个内置超线程的内核)
快速开始
- 安装Windows 10 Pro或Enterprise,Insider build 18305或更新版本
-
启用虚拟化:
- 如果您使用的是物理机,请确保在BIOS中启用了虚拟化功能。
- 如果您使用的是虚拟机,请使用此PowerShell cmdlet启用嵌套虚拟化:
- Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $ true
- 打开Windows功能,然后选择Windows Sandbox。选择“ 确定”以安装Windows Sandbox。系统可能会要求您重新启动计算机。
- Windows Feature
- 使用“ 开始”菜单,找到Windows Sandbox,运行它并允许提升
- 从主机复制可执行文件
- 将可执行文件粘贴到Windows Sandbox的窗口中(在Windows桌面上)
- 在Windows Sandbox中运行可执行文件; 如果是安装程序,请继续安装
- 运行应用程序并像平常一样使用它
- 完成实验后,您只需关闭Windows Sandbox应用程序即可。所有沙盒内容都将被丢弃并永久删除
- 确认主机没有您在Windows Sandbox中进行的任何修改。
2、详细图文
(1)开启
使用先决条件:
- 官方表述中的“推荐配置”我们就不在赘述了,相信有需求的用户肯定满足
- Windows 10 Pro或Enterprise Insider内部版本18305或更高版本
- 在BIOS中启用虚拟化功能
虚拟化的类型上文也有提到,虚拟机的代码已给出。
物理机需要CPU支持,Intel平台的是Intel虚拟化技术(Intel-VT),AMD平台是AMD虚拟化技术(AMD-VT)。
比如我手中的本本:
开启Intel-VT
现在抱着小本本在穷乡僻壤码字,身边没有台式机、没有采集卡、没网、没流量,大家先将就看一下……
开启功能
Windows Sandbox功能需要在18305及更高版本的系统中手动开启,具体路径为控制面板 → 程序和功能 → 启用或关闭Windows功能 → 勾选Windows Sandbox。
点击确认后系统会自动搜索、下载所需文件,之后会重启两次,以配置更新的方式对系统做出改动。
启用或关闭Windows功能
(2)使用
重启之后并不能马上运行Windows Sandbox,开机之后会发现后台有镜像工具正在运行,磁盘占用很高,应该是在部署文件。
稍作等待就可以在开始菜单中找到Windows Sandbox。
首次运行开启需要一段时间,长短因机器而异,数十秒到几分钟都是可能的。
1. 进入桌面
进入后我们会看到和全新安装的系统同样的桌面,查看系统信息会发现系统版本和宿主机系统一致。
系统信息与宿主机一致
将Windows Sandbox窗口全屏我们将看到熟悉的远程桌面操作栏,也证实了我们之前的说法。
通过RDP传输画面
Windows Sandbox桌面环境中精简掉了很多与设计目的无关的功能和服务,但Powershell、命令提示符等系统工具都保留了下来。
系统工具
2. 进行文件操作
首先由于Windows Sandbox的设计目的是测试不信任的软件,所以删去了微软商店,开始菜单中的磁贴都是广告,点击无效,只可以通过.exe文件安装软件。Microsoft Store中下载的软件都是运行在APP Container中,本身就是安全的,所以这样设置也没有问题。
其次,Windows Sandbox中保留了Edge浏览器,应该是考虑到访问用户需要访问一些不信任或不行为太规矩的网站。
再次,由于安装和使用软件本质上也是对文件进行操作,所以我们这里仅通过文件的变动验证Windows Sandbox桌面环境是否如官方所说是“一次性”的。由于本质是虚拟机所以“隔离性”就不需要测了。
和其他Hyper-V虚拟机一样,Windows Sandbox与宿主机系统共享剪切板,但通过拖拽的形式传输文件是行不通的。
我们在宿主机系统新建一个文件,复制到Windows Sandbox中。
文件传输
3. 验证
我们先退出Windows Sandbox,这是系统会弹出对话框,询问是否确认关闭Windows Sandbox,提示一旦关闭临时桌面环境中所有文件将不会被保存且永久丢失。
关闭前二次确认
再次开启,发现果然系统焕然一新,恢复如初,之前传输的文件也已经没有了。
第二次运行
开启及使用教程到此结束,如果您还有兴趣可以接着往下看。
三、使用了哪些技术
首先感谢您看到这里。
在这部分我们将会带您解读官方介绍中关于“Windows Sandbox内核”的章节,我会尽量以通俗易懂的方式使大家理解Windows Sandbox使用了哪些技术、实现了哪些功能或特性。
1、 动态生成镜像 - Dynamically generated Image
上面我们提到,Windows Sandbox的核心是一个轻量级虚拟机,因此需要一个操作系统映像才能启动。而镜像也才100MB左右,这是如何实现的呢。
微软将Windows Sandbox所用镜像称之为“动态基本映像(dynamic base image)”,顾名思义是动态生成的,微软表示Windows Sandbox无需“像使用普通虚拟机那样下载新的VHD映像”,其实,不仅“无需”,而且不能。
Windows Sandbox镜像分为两部分,一部分是可变的(Mutable),另一部分是不可变的(Immutable)。可变文件这部分称为“基本镜像(base image)”,在未启动Windows Sandbox时以压缩包的形式存储,大小约25MB,安装后大概占用100MB的磁盘空间。
而不可变部分则是链接到宿主机系统的相关文件,也就是Windows Sandbox运行时直接调用相关文件,并不额外占用空间。这就是为何Windows Sandbox占用空间如此少的原因。
打个比方,基本动态镜像的生成和应用就像某种情况下我们去野外烧烤,我们自带食材,租用目的地商家的烤架和炭火等设施。我们自己带的食材对应可变部分,租用的设置对应的是不可变部分。
相应的,如果食材也是在目的地商家那边买的,就是云服务;如果食材和设施都是自带的就是本地计算机。
2、智能内存管理 - Smart memory management
前面我们提到Windows Sandbox是一个轻量级的桌面环境,所谓轻量级,就是占用资源较少,磁盘空间是一方面,系统性能也是一方面。
内存管理方面,微软采取的策略是“主机可以根据需要从沙盒中回收内存”。也就是说,当宿主机系统需要时间,可以将分给Windows Sandbox的内存调到更少的水平。
另外,由于Windows Sandbox基本上运行与宿主机相同的操作系统映像,微软还允许Windows Sandbox“通过我们称为“直接映射(Direct Map)”的技术使用与操作系统二进制文件的主机相同的物理内存页面”。说白了就是同一内存区域,可以同时供宿主机系统和Windows Sandbox同时访问,以此来实现节省内存。
打个比方就像是班主任在班里播放电影,班主任决定学生是否可以看、看多少,在看的同时班主任和学生看到的都是同样的内容。
3、集成内核调度程序 - Integrated kernel scheduler
这一项和上一项类似,让宿主机系统决定Windows Sandbox所需的虚拟处理器。
“允许以与为进程调度线程相同的方式调度沙箱的虚拟处理器。主机上的高优先级任务可以抢占沙箱中不太重要的工作。”
这样做的目的是宿主机系统将Windows Sandbox作为一个进程而不是虚拟机来管理,视为应用程序。
4、快照和克隆 - Snapshot and clone
这两种技术技术就是大家理解的虚拟机上的技术,目的是不需要每次启动时都花费启动系统的花销。
快照就是首次启动后将内存、CPU等设备状态存入硬盘。
克隆是“当我们需要一个新的Windows Sandbox实例时,我们可以从磁盘恢复沙箱环境并将其放入内存而不是启动它”。
5、图形虚拟化 - Graphics virtualization
既然是虚拟机,无法访问GPU等高级设备,也就需要图形化虚拟这一技术了。
官方描述的有些复杂,简单来说就是,微软和厂商合作,将现代图形虚拟化功能直接集成到DirectX和WDDM中,利用显卡驱动和系统组件,使得Windows Sandbox中运行的程序可以直接调用图形API,相当于在宿主机系统和Windows Sandbox之间搭了一座桥。
打个比方就是……额,网关……
四、Windows Sandbox和一般虚拟机的区别
讲完Windows Sandbox的特点,我们来讲和一般虚拟机的区别大家就很好理解了。
简单来说,区别主要显现在镜像。
- 一般虚拟机运行的是完整的系统镜像,而Windows Sandbox运行的是深度精简、轻量级的“动态基本镜像”;
- 一般虚拟机可以随意选择镜像版本,而Windows Sandbox的镜像则必须和宿主机系统保持一致,起码现在是这样;
- 一般虚拟机可以手动创建、删除、应用系统快照,而Windows Sandbox则是自动创建新系统的系统快照且每次启动都会自动部署;
后记
虽说Windows Sandbox是开发来当做测试环境的,不过也不是说就可以随心所欲地测试任何项目了。
在Windows Sandbox桌面环境中对文件的操作不会影响到宿主机系统,所以可以用来测试不信任的.exe文件,甚至是激活病毒,但请不要忘记,网络是连通的(×3)。
所以如果有新品种的WannaCry还是请谨慎对待,以及账号密码在哪都别轻易填写。
好了,今天先聊到这。
如有更好的见解,欢迎补充。
如有错误,也请麻烦指正。
拜拜~~~