跟上一篇「Windows 10 Home家用版安裝Hyper-V與Docker」類似,Windows 10 Home的版本也沒有Windows Sandbox沙箱功能,這個Windows Sandbox沙箱功能是基於Hyper-V功能的Container,不過卻不會有體積龐大或是資源浪費的問題。
根據微軟的文件說明,Windows Sandbox沙箱功能在未安裝之前是一個大小約為30MB的壓縮封裝,即使安裝之後解壓縮大小也只會佔據大約500MB左右的磁碟空間。(當然你在沙箱裡面下載大檔案或是其它操作所產生的檔案是另外一回事)
動態基底影像
它所使用的技術和容器化技術相同,也就是大部份的功能是和核心OS共用的,只有少部份作業系統功能或檔案無法共用,所以在執行沙箱環境的時候,就會使用核心OS共用的功能,也因為Host本身就已經是開機執行的狀態,所以很多功能已經是Ready狀態,讓沙箱環境的載入速度非常快,時間非常短就能夠產生出一個可用的沙箱環境。
記憶體共用
Windows Sandbox沙箱環境在記憶體耗用量的部份也比傳統VM來得少,如果同樣在VM中安裝Windows 10,兩個OS載入相同功能的系統檔案所需要耗用的記憶體空間是獨立的,但是在Sandbox沙箱環境中是透過「直接對應(Direct Map)」的方式存取相同的記憶體位置。
GPU虛擬化
在Sandbox沙箱環境裡面處理圖形轉譯的部份也是很流暢的,因為在Sandbox沙箱環境執行的程式可以透過Windows顯示驅動程式模型(WDDM)來直接存取GPU的資源。
所以在沙箱環境裡面使用各種瀏覽器上網看高畫質的影片或是玩遊戲也不會有畫面不順暢的問題。當然,Sandbox沙箱功能的音效也是沒問題的。
(但前提是你的顯示卡配備要夠好)
可以拿來做什麼用?
雖然平常不是想要在沙箱環境裡面測試什麼有問題的軟體或程式,也不是要搞駭客任務,但是Sandbox沙箱環境仍然是很適合拿來做一些可能有風險的動作,例如:
- 從IM軟體(ex:Line)收到不知道是什麼的網址,想打開來看看是什麼東西卻又怕電腦中毒。
- 網路上搜尋一些東西不想被記錄,或是上一些不常去的網站抓一些東西(免費軟體、共享軟體)怕有問題,可以在沙箱環境裝防毒軟體先試試。
- 其它各類不想影響主要系統的使用情境。
如何在Windows 10 Home家用版安裝?
好了,上面簡單介紹了Windows Sandbox沙箱功能之後,是不是覺得Sandbox沙箱功能好像還不錯用啊?
安裝條件
不過Sandbox沙箱功能預設的安裝條件是需要Windows 10 Pro或是Enterprise的版本才能安裝(OS組建必須在18305以上),除此之外還有下面的基本需求:
- AMD64的架構(就是64位元的一般電腦,ARM系列的不行)
- 主機板與CPU必須支援虛擬化技術,並且在主機板有將虛擬化功能打開
- 至少4GB的記憶體(建議8GB以上)
- 至少1GB以上的磁碟可用空間(建議使用SSD)
- 至少是雙核心以上的CPU(建議4核心以上)
- 如果是在VM中執行的Windows 10,需要開啟巢狀虛擬化功能(可用下列PowerShell指令)
Set-VMProcess -VMName <VM名稱> -ExposeVirtualizationExtensions $true
安裝步驟
步驟1:滑鼠右鍵點擊左下角的Windows圖案開始按鈕,選擇「應用程式與功能(F)」。
步驟2:點擊右邊「相關設定」底下的「程式和功能」。
步驟3:點擊控制台左邊的「開啟或關閉 Windows 功能」。
步驟4:在Windows功能清單中找到「Windows 沙箱」或「Windows Sandbox」功能後打勾。
找不到「Windows 沙箱」或「Windows Sandbox」功能怎麼辦?
別著急,Windows 10 Home家用版在沒有使用密技之前,找不到這個功能是很正常的,請將下面的指令碼複製下來貼到記事本,並且將檔案儲存為副檔名.bat的檔案(主檔名隨意),再透過滑鼠右鍵選擇「以系統管理員身份執行」開啟。
批次指令執行完後輸入Y並且按下Enter讓電腦重新開機,之後再跑一次上面的步驟應該就可以找得到了。
@echo off
echo Checking for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
echo Permission check result: %errorlevel%
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
echo Running created temporary "%temp%\getadmin.vbs"
timeout /T 2
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
echo Batch was successfully started with admin privileges
echo .
cls
Title Sandbox Installer
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Containers*.mum >sandbox.txt
for /f %%i in ('findstr /i . sandbox.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del sandbox.txt
Dism /online /enable-feature /featurename:Containers-DisposableClientVM /LimitAccess /ALL
pause