這是一張有關標題為 Windows 沙箱設定教學:一步步建立安全隔離環境 的圖片

Windows 沙箱設定教學:一步步建立安全隔離環境

了解如何在 Windows 中啟用沙箱功能,進行完整初始化配置。從隔離潛在威脅到測試應用程式,助您建立安全高效的隔離工作環境。

前言

在 Windows 中,內建的沙箱功能使用虛擬化技術,能夠安全地隔離潛在威脅,同時確保應用程式在受限環境中運行而不影響主系統。這是測試未知應用程式或進行實驗性開發的理想選擇。

Windows 沙箱的主要優勢:

  • 輕量化隔離環境:提供安全隔離的輕量桌面環境,讓應用程式在不影響主機系統的情況下運行。
  • 隔離環境:每次啟動 Sandbox 都提供一個全新的、完全與主機系統隔離的 Windows 環境。
  • 無需額外下載:不需下載額外的軟體、ISO 檔案,或重新安裝 Windows 系統。
  • 基於硬體的安全性:透過硬體虛擬化實現核心隔離,提供較高的安全性。
  • 最佳化效能:智慧資源分配,確保操作流暢。

然而,沙箱預設僅提供基本功能,且在新版 Windows 11 中,甚至可能缺少像記事本這樣的基本應用程式。本文章會說明如何配置沙箱,以支援必要的工具(例如 VS Code 或免安裝應用程式),從而建立一個功能完善且高效的測試環境。

開啟 BIOS 中的虛擬化功能

若要使用 Windows 沙箱功能,需先確保在 BIOS 或 UEFI 設定中啟用了虛擬化功能。

確認主機板型號

  1. 先確認主機板型號,打開 命令提示字元,並輸入以下指令,取得主機板名稱:
1
powershell "Get-CimInstance -ClassName Win32_BaseBoard | Select-Object Manufacturer, Product, Version, SerialNumber"
  1. 執行後會顯示主機板的詳細資料,例如:
1
2
3
Manufacturer          Product                      Version  SerialNumber
------------          -------                      -------  ------------
ASUSTeK COMPUTER INC. TUF GAMING B760-PLUS WIFI D4 Rev 1.xx 230418721200683

如何啟用虛擬化功能

根據取得的主機板型號,您可以採用以下方式尋找相關教學資源:

  1. 搜尋型號關鍵字,例如:TUF GAMING B760-PLUS WIFI D4 virtualization。
  2. 參考 YouTube 教學影片或查閱主機板官方網站上的技術說明。
  3. 若已知主機板廠牌,也可直接搜尋關鍵字,例如:華碩 虛擬化Lenovo virtualization,以找到相關操作指南。

以下是常見主機板廠商開啟虛擬化的教學:

驗證虛擬化功能是否啟用

完成設定後,重新進入 Windows,開啟 工作管理員(快捷鍵:Ctrl + Shift + Esc),點擊 效能 分頁,檢查 虛擬化(模擬) 是否顯示為「已啟用」。

於工作管理員中檢查是否以開啟虛擬化

安裝 Windows 沙箱

預設情況下,只有專業版、企業版或教育版才支援 Windows 沙箱。如果是Windows 是家用版版本請參考這篇進行安裝

使用系統管理員身份執行 命令提示字元PowerShell,並輸入以下指令以啟用 Windows 沙箱功能:

1
powershell -Command "Enable-WindowsOptionalFeature -FeatureName 'Containers-DisposableClientVM' -All -Online"

安裝完後,可以再開始找到 Windows 沙箱:

在開始菜單找到 Windows 沙箱

直接啟動 Windows 沙箱後,會看到一個乾淨的虛擬環境:

直接執行 Windows 沙箱

設定 Windows 沙箱設定(.wsb)

建立沙箱工作目錄

為了保持使用環境的一致性,建議先建立沙箱的工作目錄。資料夾名稱與預設路徑可根據需求自行調整,但請確保相關腳本路徑同步更新:

  1. C:\Sandbox:映射到沙箱的主目錄,提供可讀寫權限。
  2. C:\Sandbox\Apps:用於存放安裝或免安裝的應用程式,類似於 C:\Program Files 的用途。
  3. C:\Sandbox\Install:存放原始安裝檔案,以供需要時進行手動安裝。
  4. C:\Sandbox\boot.bat:每次啟動沙箱時自動執行的腳本,用於執行基礎設定。
  5. C:\Sandbox\create_paths.ps1:用於產生桌面捷徑的 PowerShell 腳本,會從 Apps 目錄中的程式建立對應捷徑。

建立 WSB

Windows 沙箱支援透過撰寫 XML 設定檔進行基本初始化。我們可以使用 VS Code 或其他編輯器在桌面上建立名為 boot.wsb 的設定檔案。以下是一個範例設定:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<Configuration>
    <MappedFolders>
        
        <MappedFolder>
            <HostFolder>C:\Sandbox</HostFolder>
            <SandboxFolder>C:\Sandbox</SandboxFolder>
        </MappedFolder>

        <MappedFolder>
            <HostFolder>C:\Users\wells\Downloads</HostFolder>
            <SandboxFolder>C:\Users\WDAGUtilityAccount\Downloads</SandboxFolder>
            <ReadOnly>true</ReadOnly>
        </MappedFolder>

    </MappedFolders>
    <LogonCommand>
        <Command>cmd /c "C:\Sandbox\boot.bat"</Command>
    </LogonCommand>
</Configuration>

上面的設定內容,主要是:

  1. 主目錄映射:將主機端的 C:\Sandbox 映射到沙箱內的路徑 C:\Sandbox,並設為可讀可寫。
  2. 下載資料夾映射:將主機端的 C:\Users\wells\Downloads 映射到沙箱內的路徑 C:\Users\WDAGUtilityAccount\Downloads,設為唯讀。
  3. 自動執行腳本:沙箱登入後會自動執行 C:\Sandbox\boot.bat,以完成必要的初始化設定。

建立開機執行腳本

在主機的 C:\Sandbox 目錄下建立 boot.bat,用於沙箱啟動時自動初始化。此腳本的主要功能包括:

  • 建立桌面捷徑(第 4 行)
  • 安裝 7-zip (第 7 行)
  • 設定 Windows 基礎選項(第 9 行 ~ 第 58 行)
  • 設定檔案關聯(第 60 行 ~ 第 78 行)

此腳本可以高度自定義,例如,若需要安裝 Notepad++,可將安裝檔放置於 C:\Sandbox\Install,並在腳本中加入以下指令:

1
"C:\Sandbox\Install\npp.8.4.6.Installer.x64.exe" /S

若使用免安裝版本,可將其解壓縮至指定路徑(C:\Sandbox\Apps),並在後續自動建立捷徑到桌面。

C:\Sandbox\boot.bat:

 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
@echo off

REM 執行 PowerShell 腳本以創建路徑
powershell -NoProfile -ExecutionPolicy Bypass -Command "& 'C:\Sandbox\create_paths.ps1'"

REM 安靜地安裝 7-zip
"C:\Sandbox\Install\7z1900.exe" /S

REM 啟用 Sudo 模擬功能
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Sudo" /v "Enabled" /t REG_DWORD /d 3 /f

REM 在應用程式右鍵選單中顯示「以其他使用者執行」選項
reg add "HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer" /v "ShowRunAsDifferentUserInStart" /t REG_DWORD /d 1 /f

REM 設定控制台預設委派為 Windows Console
reg add "HKEY_CURRENT_USER\Console\%%Startup" /v "DelegationConsole" /t REG_SZ /d "{2EACA947-7F5F-4CFA-BA87-8F7FBEEFBE69}" /f

REM 設定終端機預設委派為 Windows Terminal
reg add "HKEY_CURRENT_USER\Console\%%Startup" /v "DelegationTerminal" /t REG_SZ /d "{E12CFF52-A866-4C77-9A90-F570A7AA2C6B}" /f

REM 在任務欄選單中啟用「結束任務」功能
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarDeveloperSettings" /v "TaskbarEndTask" /t REG_DWORD /d 1 /f

REM 設定 Alt+Tab 多任務切換顯示所有視窗
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "MultiTaskingAltTabFilter" /t REG_DWORD /d 3 /f

REM 在系統時鐘中顯示秒數
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowSecondsInSystemClock" /t REG_DWORD /d 1 /f

REM 將任務欄圖示排列設定為靠左
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarAl" /t REG_DWORD /d 0 /f

REM 設定任務欄不合併相同應用程式視窗
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarGlomLevel" /t REG_DWORD /d 2 /f

REM 設定多螢幕情境下不合併任務欄項目
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "MMTaskbarGlomLevel" /t REG_DWORD /d 2 /f

REM 設定多螢幕情境下將應用程式固定在當前螢幕任務欄
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "MMTaskbarMode" /t REG_DWORD /d 2 /f

REM 啟用開始選單中的自訂佈局
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "Start_Layout" /t REG_DWORD /d 1 /f

REM 關閉開始選單中的建議項目顯示
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "Start_IrisRecommendations" /t REG_DWORD /d 0 /f

REM 顯示檔案的副檔名
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f

REM 顯示隱藏的檔案和資料夾
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "Hidden" /t REG_DWORD /d 1 /f

REM 還原舊版 Windows 傳統右鍵選單
reg add "HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve

REM 將檔案總管 Win+E 預設開啟路徑設為「本機」
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "LaunchTo" /t REG_DWORD /d 1 /f

REM 設定 .txt 文件的類型關聯為 txt_auto_file
reg add "HKEY_CURRENT_USER\Software\Classes\.txt" /ve /d "vscode_file" /f
reg add "HKEY_CURRENT_USER\Software\Classes\.js" /ve /d "vscode_file" /f
reg add "HKEY_CURRENT_USER\Software\Classes\.inf" /ve /d "vscode_file" /f

REM 配置 txt_auto_file 類型的開啟命令,指定 VSCode 為默認編輯器
reg add "HKEY_CURRENT_USER\Software\Classes\vscode_file\shell\open\command" /ve /d "\"C:\\Sandbox\\Apps\\VSCode\\Code.exe\" \"%1\"" /f

REM 配置 VSCode (Code.exe) 的開啟命令
REM 建立 Code.exe 應用程序登錄項
reg add "HKEY_CURRENT_USER\Software\Classes\Applications\Code.exe" /f
REM 設定 DefaultIcon 為 VSCode 的圖標
reg add "HKEY_CURRENT_USER\Software\Classes\Applications\Code.exe\DefaultIcon" /ve /d "C:\\Sandbox\\Apps\\VSCode\\resources\\app\\resources\\win32\\default.ico" /f
REM 建立 shell 登錄項
reg add "HKEY_CURRENT_USER\Software\Classes\Applications\Code.exe\shell" /f
REM 設定 open 的圖標
reg add "HKEY_CURRENT_USER\Software\Classes\Applications\Code.exe\shell\open" /v "Icon" /d "\"C:\\Sandbox\\Apps\\VSCode\\Code.exe\"" /f
REM 設定 open\command 為 VSCode 開啟命令
reg add "HKEY_CURRENT_USER\Software\Classes\Applications\Code.exe\shell\open\command" /ve /d "\"C:\\Sandbox\\Apps\\VSCode\\Code.exe\" \"%1\"" /f

REM 重啟檔案總管以應用更改
taskkill /f /im explorer.exe
start explorer.exe

自動新增捷徑至桌面

在主機的 C:\Sandbox 目錄下建立 create_paths.ps1,用於沙箱啟動時建立桌面捷徑。

只需在 $Apps 陣列中新增欲建立捷徑的應用程式路徑與名稱。我目前在 C:\Sandbox\Apps 放置了 VS CodeWeChatBaiduNetdisk

以下是完整的 Powershell 腳本:

 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
36
# 將進度條設定為安靜模式
$ProgressPreference='Silent'

# 設定桌面路徑
$DesktopPath = [Environment]::GetFolderPath("Desktop")

# 定義函式:建立捷徑
function Create-Shortcut {
    param (
        [string]$ShortcutPath,     # 捷徑存放位置
        [string]$TargetPath,       # 捷徑指向的目標路徑
        [string]$Description = "", # 捷徑描述 (選填)
        [string]$IconLocation = "" # 捷徑圖示路徑 (選填)
    )
    $WScriptShell = New-Object -ComObject WScript.Shell
    $Shortcut = $WScriptShell.CreateShortcut($ShortcutPath)
    $Shortcut.TargetPath = $TargetPath
    $Shortcut.Description = $Description
    if ($IconLocation -ne "") {
        $Shortcut.IconLocation = $IconLocation
    }
    $Shortcut.Save()
}

# 定義應用程式的路徑與捷徑名稱
$Apps = @(
    @{ Path = "C:\Sandbox\Apps\BaiduNetdisk\BaiduNetdisk.exe"; Name = "BaiduNetdisk" },
    @{ Path = "C:\Sandbox\Apps\WeChat\WeChat.exe"; Name = "WeChat" },
    @{ Path = "C:\Sandbox\Apps\VSCode\Code.exe"; Name = "VSCode" }
)

# 為每個應用程式建立桌面捷徑
foreach ($App in $Apps) {
    $ShortcutPath = Join-Path -Path $DesktopPath -ChildPath ("$($App.Name).lnk")
    Create-Shortcut -ShortcutPath $ShortcutPath -TargetPath $App.Path -Description "Launch $($App.Name)"
}

使用 WSB 啟動沙箱

  1. 啟動沙箱

    點擊桌面上的 boot.wsb 文件,即可快速啟動沙箱環境。

    撰寫好 WSB 後,直接執行

  2. 自動載入設定

    如下圖所示,透過預先撰寫的設定檔,每次啟動沙箱時,環境設定會自動載入。這能有效避免重複下載或安裝特定軟體,大幅提升使用效率。

    以 WSB 執行沙箱

結論

透過建立完善的沙箱環境與預設軟體,您可以更快速地測試相關應用程式,並有效實現與本機系統的完全隔離。沙箱不僅適合測試不明來源的程式,也非常適合進行開發工作,提供了一個安全、獨立的操作空間。

以我個人的使用情境為例,沙箱主要用於運行微信、百度雲等中國軟體。在這些應用可能對系統進行未明修改的情況下,沙箱能快速還原至初始狀態,有效消除安全隱患,從而提升系統的整體安全性。

此外,沙箱也是測試軟體在編譯後的理想環境,特別是在模擬全新 Windows 系統時,能有效檢測軟體運行所需的執行環境是否完整,避免提供給他人程式檔時因環境不完整而導致的錯誤結果。

參考文獻

  1. Windows Sandbox
  2. Windows Sandbox configuration
主題 Stack 由 Jimmy 設計