前言
(毫無預兆地,)咱們今天來聊一聊Windows Sandbox。
俗話說王老板可能會遲到,但永遠不會缺席。(大霧)
雖然功能出來有一個多月了,官方介紹和網(wǎng)上各種教程已經(jīng)滿天飛了,但一般都只是把官方給出的“特性”和“使用條件”(谷歌翻譯一下然后一字不改地)搬運過來,所以我們今天還有不少東西可以聊。
之前在IT之家投稿文章的評論區(qū),有些網(wǎng)友說我前言廢話太多且和正文無實際聯(lián)系,我們今天就嘗試一下少說廢話。
開聊。
正文
我們將按照以下順序介紹:
- 首先簡單介紹一下什么是Windows Sandbox,我們會貼出官方的表述和我們自己的見解([注:為便于理解會同時列出部分英文原文。]);
- 如何開啟并使用Windows Sandbox,搬運官方給出的步驟,之后列出我們自己的圖文過程;
- 感興趣的小伙伴可以接下去看,我們將會以簡單易懂的方式介紹Sandbox所使用的的技術(shù)。
- 講完上述部分,再自然而然地引出,Windows Sandbox和一般虛擬機的區(qū)別。
一、什么是Windows Sandbox
1、定義
Sandbox直譯是沙盤,也叫沙盒或沙箱,特點是可以推倒重來、抹去使用痕跡,對外部環(huán)境不產(chǎn)生任何影響。
Windows Sandbox正是為“安全地運行應用程序”而量身定制。用戶可以在這個獨立且封閉的臨時桌面環(huán)境里,運行不受信任的軟件比如未知的exe文件,不會對宿主機系統(tǒng)造成任何影響。因為 Windows Sandbox 中安裝的任何軟件以及做出的任何文件變動,下次啟動時將不復存在。
按照慣例我們先看一下官方給的表述:
Windows Sandbox is a new lightweight desktop environment tailored for safely running applications in isolation.
(谷歌)翻譯過來:
Windows Sandbox是一種新的輕量級桌面環(huán)境,專為安全運行應用程序而量身定制。
這其實是更加側(cè)重于功能性的描述,把側(cè)重點放在實質(zhì)上,我們會得出以下描述:
Windows Sandbox是一款輕量級的、每次啟動加載固定快照的虛擬機。
為照顧到大部分讀者,這里先稍微解釋一下,用到哪些技術(shù)或如何實現(xiàn)下文再談。
- 輕量級:由于大部分文件與宿主機共用,所以大小被控制在100MB左右;
- 每次啟動加載固定快照:關(guān)閉之后會清除所有使用痕跡,再次啟動會回到全新的系統(tǒng)狀態(tài)。相當于首次啟動時就建立了快照,之后每次啟動都自動加載這一快照。
- 虛擬機:官方介紹中這樣說道:“Windows Sandbox的核心是一個輕量級虛擬機”。本質(zhì)上是Hyper-V在本地創(chuàng)建一個虛擬機,然后通過遠程桌面協(xié)議(RDP)傳輸畫面
- 系統(tǒng)鏡像則是深度精簡過的幾乎與宿主機相同的系統(tǒng),且診斷數(shù)據(jù)設置與宿主機保持一致。
2、特征
官方介紹中已足夠詳細且易于理解。
Windows Sandbox具有以下屬性:
- Windows的一部分 - 此功能所需的一切都隨Windows 10 Pro和Enterprise一起提供。無需下載VHD!
- 原始 - 每次Windows Sandbox運行時,它都像Windows的全新安裝一樣干凈
- 一次性 - 設備上沒有任何東西; 關(guān)閉應用程序后,一切都將被丟棄
安全 - 使用基于硬件的虛擬化進行內(nèi)核隔離,后者依靠Microsoft的虛擬機管理程序運行單獨的內(nèi)核,將Windows Sandbox與主機隔離開來 - 高效 - 使用集成的內(nèi)核調(diào)度程序,智能內(nèi)存管理和虛擬GPU
二、開啟與使用教程
1、官方表述
使用該功能的先決條件
- Windows 10 Pro或Enterprise Insider內(nèi)部版本18305或更高版本
- AMD64架構(gòu)
- 在BIOS中啟用虛擬化功能
- 至少4GB的RAM(推薦8GB)
- 至少1 GB的可用磁盤空間(建議使用SSD)
- 至少2個CPU內(nèi)核(建議使用4個內(nèi)置超線程的內(nèi)核)
快速開始
- 安裝Windows 10 Pro或Enterprise,Insider build 18305或更新版本
-
啟用虛擬化:
- 如果您使用的是物理機,請確保在BIOS中啟用了虛擬化功能。
- 如果您使用的是虛擬機,請使用此PowerShell cmdlet啟用嵌套虛擬化:
- Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $ true
- 打開Windows功能,然后選擇Windows Sandbox。選擇“ 確定”以安裝Windows Sandbox。系統(tǒng)可能會要求您重新啟動計算機。
- Windows Feature
- 使用“ 開始”菜單,找到Windows Sandbox,運行它并允許提升
- 從主機復制可執(zhí)行文件
- 將可執(zhí)行文件粘貼到Windows Sandbox的窗口中(在Windows桌面上)
- 在Windows Sandbox中運行可執(zhí)行文件; 如果是安裝程序,請繼續(xù)安裝
- 運行應用程序并像平常一樣使用它
- 完成實驗后,您只需關(guān)閉Windows Sandbox應用程序即可。所有沙盒內(nèi)容都將被丟棄并永久刪除
- 確認主機沒有您在Windows Sandbox中進行的任何修改。
2、詳細圖文
(1)開啟
使用先決條件:
- 官方表述中的“推薦配置”我們就不在贅述了,相信有需求的用戶肯定滿足
- Windows 10 Pro或Enterprise Insider內(nèi)部版本18305或更高版本
- 在BIOS中啟用虛擬化功能
虛擬化的類型上文也有提到,虛擬機的代碼已給出。
物理機需要CPU支持,Intel平臺的是Intel虛擬化技術(shù)(Intel-VT),AMD平臺是AMD虛擬化技術(shù)(AMD-VT)。
比如我手中的本本:
開啟Intel-VT
現(xiàn)在抱著小本本在窮鄉(xiāng)僻壤碼字,身邊沒有臺式機、沒有采集卡、沒網(wǎng)、沒流量,大家先將就看一下……
開啟功能
Windows Sandbox功能需要在18305及更高版本的系統(tǒng)中手動開啟,具體路徑為控制面板 → 程序和功能 → 啟用或關(guān)閉Windows功能 → 勾選Windows Sandbox。
點擊確認后系統(tǒng)會自動搜索、下載所需文件,之后會重啟兩次,以配置更新的方式對系統(tǒng)做出改動。
啟用或關(guān)閉Windows功能
(2)使用
重啟之后并不能馬上運行Windows Sandbox,開機之后會發(fā)現(xiàn)后臺有鏡像工具正在運行,磁盤占用很高,應該是在部署文件。
稍作等待就可以在開始菜單中找到Windows Sandbox。
首次運行開啟需要一段時間,長短因機器而異,數(shù)十秒到幾分鐘都是可能的。
1. 進入桌面
進入后我們會看到和全新安裝的系統(tǒng)同樣的桌面,查看系統(tǒng)信息會發(fā)現(xiàn)系統(tǒng)版本和宿主機系統(tǒng)一致。


將Windows Sandbox窗口全屏我們將看到熟悉的遠程桌面操作欄,也證實了我們之前的說法。

Windows Sandbox桌面環(huán)境中精簡掉了很多與設計目的無關(guān)的功能和服務,但Powershell、命令提示符等系統(tǒng)工具都保留了下來。

2. 進行文件操作
首先由于Windows Sandbox的設計目的是測試不信任的軟件,所以刪去了微軟商店,開始菜單中的磁貼都是廣告,點擊無效,只可以通過.exe文件安裝軟件。Microsoft Store中下載的軟件都是運行在APP Container中,本身就是安全的,所以這樣設置也沒有問題。
其次,Windows Sandbox中保留了Edge瀏覽器,應該是考慮到訪問用戶需要訪問一些不信任或不行為太規(guī)矩的網(wǎng)站。
再次,由于安裝和使用軟件本質(zhì)上也是對文件進行操作,所以我們這里僅通過文件的變動驗證Windows Sandbox桌面環(huán)境是否如官方所說是“一次性”的。由于本質(zhì)是虛擬機所以“隔離性”就不需要測了。
和其他Hyper-V虛擬機一樣,Windows Sandbox與宿主機系統(tǒng)共享剪切板,但通過拖拽的形式傳輸文件是行不通的。
我們在宿主機系統(tǒng)新建一個文件,復制到Windows Sandbox中。

3. 驗證
我們先退出Windows Sandbox,這時系統(tǒng)會彈出對話框,詢問是否確認關(guān)閉Windows Sandbox,提示一旦關(guān)閉臨時桌面環(huán)境中所有文件將不會被保存且永久丟失。

再次開啟,發(fā)現(xiàn)果然系統(tǒng)煥然一新,恢復如初,之前傳輸?shù)奈募惨呀?jīng)沒有了。

開啟及使用教程到此結(jié)束,如果您還有興趣可以接著往下看。
三、使用了哪些技術(shù)
首先感謝您看到這里。
在這部分我們將會帶您解讀官方介紹中關(guān)于“Windows Sandbox內(nèi)核”的章節(jié),我會盡量以通俗易懂的方式使大家理解Windows Sandbox使用了哪些技術(shù)、實現(xiàn)了哪些功能或特性。
1、 動態(tài)生成鏡像 - Dynamically generated Image
上面我們提到,Windows Sandbox的核心是一個輕量級虛擬機,因此需要一個操作系統(tǒng)映像才能啟動。而鏡像也才100MB左右,這是如何實現(xiàn)的呢。
微軟將Windows Sandbox所用鏡像稱之為“動態(tài)基本映像(dynamic base image)”,顧名思義是動態(tài)生成的,微軟表示W(wǎng)indows Sandbox無需“像使用普通虛擬機那樣下載新的VHD映像”,其實,不僅“無需”,而且不能。
Windows Sandbox鏡像分為兩部分,一部分是可變的(Mutable),另一部分是不可變的(Immutable)??勺兾募@部分稱為“基本鏡像(base image)”,在未啟動Windows Sandbox時以壓縮包的形式存儲,大小約25MB,安裝后大概占用100MB的磁盤空間。
而不可變部分則是鏈接到宿主機系統(tǒng)的相關(guān)文件,也就是Windows Sandbox運行時直接調(diào)用相關(guān)文件,并不額外占用空間。這就是為何Windows Sandbox占用空間如此少的原因。
打個比方,基本動態(tài)鏡像的生成和應用就像某種情況下我們?nèi)ヒ巴鉄?,我?strong>自帶食材,租用目的地商家的烤架和炭火等設施。我們自己帶的食材對應可變部分,租用的設置對應的是不可變部分。
相應的,如果食材也是在目的地商家那邊買的,就是云服務;如果食材和設施都是自帶的就是本地計算機。
2、智能內(nèi)存管理 - Smart memory management
前面我們提到Windows Sandbox是一個輕量級的桌面環(huán)境,所謂輕量級,就是占用資源較少,磁盤空間是一方面,系統(tǒng)性能也是一方面。
內(nèi)存管理方面,微軟采取的策略是“主機可以根據(jù)需要從沙盒中回收內(nèi)存”。也就是說,當宿主機系統(tǒng)需要時間,可以將分給Windows Sandbox的內(nèi)存調(diào)到更少的水平。
另外,由于Windows Sandbox基本上運行與宿主機相同的操作系統(tǒng)映像,微軟還允許Windows Sandbox“通過我們稱為“直接映射(Direct Map)”的技術(shù)使用與操作系統(tǒng)二進制文件的主機相同的物理內(nèi)存頁面”。說白了就是同一內(nèi)存區(qū)域,可以同時供宿主機系統(tǒng)和Windows Sandbox同時訪問,以此來實現(xiàn)節(jié)省內(nèi)存。
打個比方就像是班主任在班里播放電影,班主任決定學生是否可以看、看多少,在看的同時班主任和學生看到的都是同樣的內(nèi)容。
3、集成內(nèi)核調(diào)度程序 - Integrated kernel scheduler
這一項和上一項類似,讓宿主機系統(tǒng)決定Windows Sandbox所需的虛擬處理器。
“允許以與為進程調(diào)度線程相同的方式調(diào)度沙箱的虛擬處理器。主機上的高優(yōu)先級任務可以搶占沙箱中不太重要的工作?!?br>
這樣做的目的是宿主機系統(tǒng)將Windows Sandbox作為一個進程而不是虛擬機來管理,視為應用程序。
4、快照和克隆 - Snapshot and clone
這兩種技術(shù)技術(shù)就是大家理解的虛擬機上的技術(shù),目的是不需要每次啟動時都花費啟動系統(tǒng)的花銷。
快照就是首次啟動后將內(nèi)存、CPU等設備狀態(tài)存入硬盤。
克隆是“當我們需要一個新的Windows Sandbox實例時,我們可以從磁盤恢復沙箱環(huán)境并將其放入內(nèi)存而不是啟動它”。
5、圖形虛擬化 - Graphics virtualization
既然是虛擬機,無法訪問GPU等高級設備,也就需要圖形化虛擬這一技術(shù)了。
官方描述的有些復雜,簡單來說就是,微軟和廠商合作,將現(xiàn)代圖形虛擬化功能直接集成到DirectX和WDDM中,利用顯卡驅(qū)動和系統(tǒng)組件,使得Windows Sandbox中運行的程序可以直接調(diào)用圖形API,相當于在宿主機系統(tǒng)和Windows Sandbox之間搭了一座橋。

打個比方就是……額,網(wǎng)關(guān)……
四、Windows Sandbox和一般虛擬機的區(qū)別
講完Windows Sandbox的特點,我們來講和一般虛擬機的區(qū)別大家就很好理解了。
簡單來說,區(qū)別主要顯現(xiàn)在鏡像。
- 一般虛擬機運行的是完整的系統(tǒng)鏡像,而Windows Sandbox運行的是深度精簡、輕量級的“動態(tài)基本鏡像”;
- 一般虛擬機可以隨意選擇鏡像版本,而Windows Sandbox的鏡像則必須和宿主機系統(tǒng)保持一致,起碼現(xiàn)在是這樣;
- 一般虛擬機可以手動創(chuàng)建、刪除、應用系統(tǒng)快照,而Windows Sandbox則是自動創(chuàng)建新系統(tǒng)的系統(tǒng)快照且每次啟動都會自動部署;
后記
雖說Windows Sandbox是開發(fā)來當做測試環(huán)境的,不過也不是說就可以隨心所欲地測試任何項目了。
在Windows Sandbox桌面環(huán)境中對文件的操作不會影響到宿主機系統(tǒng),所以可以用來測試不信任的.exe文件,甚至是激活病毒,但請不要忘記,網(wǎng)絡是連通的(×3)。
所以如果有新品種的WannaCry還是請謹慎對待,以及賬號密碼在哪都別輕易填寫。
好了,今天先聊到這。
如有更好的見解,歡迎補充。
如有錯誤,也請麻煩指正。
拜拜~~~


