Windows 沙盒提供了輕型桌面環境,可以安全地在隔離狀態下運行應用程序。 安裝在 Windows 沙盒環境下的軟件保持“沙盒”狀態,并且與主機分開運行。
沙盒是臨時的。 關閉后,系統將刪除所有軟件和文件以及狀態。 每次打開應用程序時,都會獲得沙盒的全新實例。
安裝在主機上的軟件和應用程序不會直接出現在沙盒中。 如果需要在 Windows 沙盒環境中運行特定的應用程序,則相應的應用程序必須就是安裝在沙盒環境中才行。
按下快捷鍵,win+R,輸入cmd,確定,打開命令窗口,輸入msinfo32,注意要在英文狀態下輸入,回車。然后在彈出的窗口中就可以看到系統的具體版本號了。
按下快捷鍵,win+R,輸入cmd,確定,打開命令窗口,輸入ver,回車。
按下快捷鍵,win+R,輸入winver,確定。
1,點擊開始菜單--輸入“控制面板”
2,控制面板中,打開程序
3,在程序中,點擊 啟用或關閉windows功能,找到windows沙盒,打上√。點擊確定
1,打開windows沙盒
點擊開始菜單--輸入 windows sandbox,點擊打開
2,下載安裝軟件
比如QQ,獨立安裝在windows沙盒中。并不會出現在主機上。當然主機上的軟件火絨也同樣不會出現在windows沙盒中。
3,關閉沙盒
點擊關閉windows沙盒程序,會提示,關閉windows沙盒后,其所有內容都將放棄并永久丟失。
windows沙盒和主機系統之間是無法通過拖拽傳輸數據的
可以通過復制粘貼,直接復制主機上的文件,然后粘貼在windows沙盒中即可
windows沙盒和主機之間的網絡通信,使用的是Hyper-V Network。采用了Hyper-V網絡虛擬化技術,通過虛擬網卡和主機進行通信。
windows沙盒網關地址指向主機上的Hyper-V虛擬網卡的地址。
不支持多開。運行一個windows沙盒后,再次打開Windows Sandbox。會提示如下報錯。僅允許一個運行的Windows沙盒
Windows 沙盒支持簡單的配置文件,這些文件為 Sandbox 提供最少的自定義參數集。 此功能可用于Windows 10版本 18342 或Windows 11。 Windows 沙盒配置文件的格式設置為 XML,并通過.wsb文件擴展名與 Sandbox 關聯。
若要創建配置文件,請執行以下操作:
<Configuration>
</Configuration>
若要使用配置文件,請雙擊它,根據其設置開始Windows 沙盒。 也可以通過命令行調用它,如下所示:
C:\Temp> MyConfigFile.wsb
啟用或禁用 GPU 共享。
<vGPU>value</vGPU>
支持的值:
備注:啟用虛擬化 GPU 可能會增加沙盒的攻擊面。
啟用或禁用沙盒中的網絡。 可以禁用網絡訪問,以減少沙盒暴露的攻擊面。
<Networking>value</Networking>
支持的值:
備注:啟用網絡可以向內部網絡公開不受信任的應用程序。
一個文件夾數組,每個文件夾表示主機上將共享到指定路徑的沙盒中的位置。 目前不支持相對路徑。 如果未指定路徑,文件夾將映射到容器用戶的桌面。
<MappedFolders><MappedFolder>
<HostFolder>absolute path to the host folder</HostFolder>
<SandboxFolder>absolute path to the sandbox folder</SandboxFolder>
<ReadOnly>value</ReadOnly>
</MappedFolder><MappedFolder>
...
</MappedFolder></MappedFolders>
HostFolder:指定要共享到沙盒中的主機上的文件夾。 該文件夾必須已存在于主機上,否則容器將無法啟動。
沙盒文件夾:指定要將文件夾映射到的沙盒中的目標。 如果文件夾不存在,則會創建該文件夾。 如果未指定沙盒文件夾,文件夾將映射到容器桌面。
ReadOnly:如果 為 true,則強制從容器內對共享文件夾進行只讀訪問。 支持的值: true/false。 默認值為 false。
備注:從主機映射的文件和文件夾可能會被沙盒中的應用入侵,或者可能會影響主機。
指定在沙盒登錄后自動調用的單個命令。 沙盒中的應用在容器用戶帳戶下運行。 容器用戶帳戶應為管理員帳戶。
<LogonCommand><Command>command to be invoked</Command></LogonCommand>
命令:容器中要在登錄后執行的可執行文件或腳本的路徑。
備注:盡管非常簡單的命令 ((例如啟動可執行文件或腳本) )有效,但應將涉及多個步驟的更復雜的方案放入腳本文件中。 此腳本文件可通過共享文件夾映射到容器,然后通過 LogonCommand 指令執行。
啟用或禁用沙盒的音頻輸入。
<AudioInput>value</AudioInput>
支持的值:
備注:向容器公開主機音頻輸入可能會有安全影響。
啟用或禁用沙盒的視頻輸入。
<VideoInput>value</VideoInput>
支持的值:
備注:向容器公開主機視頻輸入可能會產生安全影響。
將更多安全設置應用到沙盒遠程桌面客戶端,減少其攻擊面。
<ProtectedClient>value</ProtectedClient>
支持的值:
備注:此設置可能會限制用戶在沙盒中復制/粘貼文件的能力。
啟用或禁用從主機到沙盒的打印機共享。
<PrinterRedirection>value</PrinterRedirection>
支持的值:
啟用或禁用與沙盒共享主機剪貼板。
<ClipboardRedirection>value</ClipboardRedirection>
支持的值:
指定沙盒可以使用 MB (MB) 的內存量。
<MemoryInMB>value</MemoryInMB>
如果指定的內存值不足以啟動沙盒,則會自動將其增加到所需的最小量。
以下配置文件可用于輕松測試沙盒內下載的文件。 若要實現此測試,將禁用網絡和 vGPU,并允許沙盒對共享下載文件夾進行只讀訪問。 為方便起見,登錄命令會在沙盒中打開下載文件夾。
<Configuration>
<VGpu>Disable</VGpu>
<Networking>Disable</Networking>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\Users\Public\Downloads</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\Downloads</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>explorer.exe C:\users\WDAGUtilityAccount\Downloads</Command>
</LogonCommand>
</Configuration>
對應的文件夾目錄一定要正確,否則無法打開windows sandbox,會有報錯提示。
<HostFolder>C:\Users\Public\Downloads</HostFolder>,對應你本機的文件夾目錄。
以下配置文件在沙盒中安裝Visual Studio Code,這需要稍微復雜的 LogonCommand 安裝。
兩個文件夾映射到沙盒中;第一個 (SandboxScripts) 包含 VSCodeInstall.cmd,它將安裝并運行Visual Studio Code。 (CodingProjects) 的第二個文件夾假定包含開發人員想要使用Visual Studio Code修改的項目文件。
這2個文件夾需要在主機目錄下創建。
C:\SandboxScripts
C:\CodingProjects
由于Visual Studio Code安裝程序腳本已映射到沙盒中,LogonCommand 可以引用它。
REM Download Visual Studio Code
curl -L "https://update.code.visualstudio.com/latest/win32-x64-user/stable" --output C:\users\WDAGUtilityAccount\Desktop\vscode.exe
REM Install and run Visual Studio Code
C:\users\WDAGUtilityAccount\Desktop\vscode.exe /verysilent /suppressmsgboxes
<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\SandboxScripts</HostFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
<MappedFolder>
<HostFolder>C:\CodingProjects</HostFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>C:\Users\WDAGUtilityAccount\Desktop\SandboxScripts\VSCodeInstall.cmd</Command>
</LogonCommand>
</Configuration>
運行后VSCode.wsb,沙盒中自動下載并運行vscode
完成后,保存文件并為其提供 .wsb 文件擴展名。例如,如果文本編輯器將其另存為沙盒.txt,請將其另存為 Sandbox.wsb。若要使用你的設置啟動 Windows 沙盒,請雙擊 .wsb 文件。你可以將其放在桌面上,也可以在“開始”菜單中創建它的快捷方式。
關于 Windows 上的一類文件有這么一些笑話:你請某人發送一個文件副本,Ta 將桌面上的「文件」拖到了聊天框,叮當一響,你收到了一份 document.lnk;你告訴 Ta 將某某軟件卸載,于是 Ta 把桌面上的「軟件」移到了回收站,告訴你「搞定了」……
這類文件讀者都很熟悉,我們一般稱之為快捷方式,它們的圖標上都帶著小箭頭。大部分軟件安裝后往往會同時在桌面和開始菜單中創建快捷方式;如果沒有,一些讀者可能會在目標文件上 右鍵 > 發送到 > 桌面快捷方式 自己己新建一個。
但除了右鍵發送到桌面,Windows 快捷方式其實還可以更快捷:在引用對象支持的情況下,它能做到直接調用軟件的子功能、以某個模式啟動程序等等。
讓我們先從快捷方式的工作方式講起。
在微軟的 開發者文檔 中,快捷方式有另外一個更準確的表述:Shell Links,可翻譯為殼層鏈接。這個名稱更趨近于它的本質:用于 Windows 殼層(Shell)的鏈接文件。Windows 圖形殼層自然是資源管理器(explorer.exe),這是它賴以工作的進程;而「鏈接」則說明 Shell Links 是指向引用對象(corresponding object)的文件而并非對象本身。
以桌面上的 Firefox.lnk 為例,當我們雙擊此鏈接,資源管理器發現用戶嘗試打開的文件類型為快捷方式,便讀取了它的「目標」屬性的內容 C:\Program Files\Mozilla Firefox\firefox.exe,然后嘗試打開此「目標」,Firefox 程序于是被喚起了。
這和我們在資源管理器地址欄輸入 Firefox.exe 位置的原理和效果是類似的。
但不同的是,快捷方式有幾個其他的屬性是我們不能通過填充地址欄做到的:
聽到打開快捷方式和在資源管理器地址欄輸入地址類似,一些讀者可能會想到,Windows 資源管理器地址欄不光能輸入文件地址,還可以輸入shell:downloads 直接打開下載文件夾,輸入shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}打開控制面板,輸入https://example.com打開網站……
是的,快捷方式也能接受這些內容。根據引用對象種類的不同,常用的快捷方式分為兩種:
通過圖形界面創建快捷方式目前有兩種途徑:從引用對象創建和使用向導創建:
以上面兩種方式創建快捷方式時,引用對象必須存在。但是創建完成后,引用對象存在與否就不再影響快捷方式,兩者只會在用戶打開快捷方式時發生關聯。
當用戶雙擊快捷方式時,系統會嘗試解析該快捷方式:首先它會用快捷方式指向的路徑檢查引用對象是否能直接找到;如果路徑的目標無對象,資源管理器接下來會使用名為 分布式鏈接跟蹤 的技術,依靠對象原來的大小,名稱,創建日期等信息進行檢索,成功找到目標后 Windows 會自動更新快捷方式的目標屬性;若無法找到則會提示用戶刪除快捷方式。
鏈接跟蹤技術的應用給快捷方式帶來了硬鏈接一樣的解析效果:引用對象刪除后恢復、重命名、移動位置都不會導致快捷方式失效。由于它也像符號鏈接一樣依靠文件路徑定位,所以只要路徑正確,無論引用對象是否是原來的文件,快捷方式都會將其打開。
同樣可以鏈接到文件的路徑,同樣由系統提供支持,快捷方式和 符號鏈接 卻有本質上的區別。快捷方式仍然是一個文件,它有自己的后綴名,有對應的數據(一個地址)和大小(幾 KB),還有自己的圖標和屬性。但符號鏈接沒有對應的數據對象,因而也沒有大小可言,它沒有后綴名,不具有完整文件結構。
以一個房子為例,每一個房子都有坐標。給別人一個符號鏈接,相當于為他開了一個直通房屋所在的傳送門,他不需要知道房子實際在什么地方;而快捷方式只是一張寫有地址的小紙條,他需要自己摸索才能到達房子。資源管理器可以讀取紙條內容后找到房屋所在,但其他程序未必有這個能力。
綜上所述,類似 TXT 文本由 Notepad 打開,快捷方式由資源管理器處理,它將自己的各個屬性值傳達給資源管理器,后者負責檢索并打開引用對象。引用對象可以是文件、目錄或 URI。
指向一個文件、目錄、網頁的快捷方式想必讀者司空見慣。但可執行程序并不是普通文件那么簡單:notepad.exe 會打開一個未命名的文件,notepad.exe kepa.txt 則會新建一個名為kepa.txt 的文本文件;URI 方案亦不只有 HTTPS,它可是 iOS 自動化的老將。
為鏈接文件添加標識與參數,將網絡快捷方式目標設置為 Windows 支持的的 URI Schemes,也許能解鎖快捷方式更多的可能性。
在圖形化操作系統尚未普及之前,用戶一次又一次輸入 命令 標識(flags)參數 來完成工作。這種方式即使放在今天在很多情況下仍然比圖形界面更高效。且不談一些仍然流行的終端應用,即使是那些專門為圖形界面設計的應用,不少也提供了終端調用的方式和豐富的標識,而這些都能被快捷方式利用。
下面以四個實例講解相關用法,本節的小結部分總結了查找標識參數的兩個方法。
Word 內置了博客寫作工具,完成后可以從軟件內直接發送至 WordPress 等平臺。但打開 Word,點擊新建,再選擇模板比較麻煩,能不能創建一個雙擊直接新建 Word 博客文章的快捷方式呢?
首先,我們需要確認 Word 支不支持命令調用的形式,有沒有提供可用的標識。在搜索引擎中鍵入 Microsoft Word CLI Flags,前幾個結果中就有微軟官方給出的 Office 終端調用文檔,文檔稱可以用 -t 加模板路徑的方式據模板新建文檔,這正是我們想要的。
使用這類快捷方式比較推薦的做法是首先定位到應用,將此應用的快捷方式作為底版。例如此例中,Word 在 Program Files\Microsoft Office 中,找到 EXE 文件、按住 Alt 拖到桌面創建一個快捷方式。
打開創建的快捷方式,編輯其「目標」屬性,在后面添加 -t"模板文件路徑" -q,這告訴 Word 跳過啟動動畫并按模板文件直接新建一個文檔。將圖標和快捷鍵名稱改成自己喜歡的樣子,一個簡單便捷的快捷方式就做好了。
想要有一個直接以無痕模式運行的 Chrome,方便銷毀敏感的搜索記錄。和上一個例子一樣,首先以 Chrome CLI Flags 為關鍵詞搜索,發現 Chrome 提供的參數多得幾頁都裝不下。不過我們只需要找和無痕模式相關的標識,在網頁內以 incognito 為關鍵詞搜索,立即能發現--incognito 標識。
為 Chrome 創建快捷方式做為底版,然后在目標屬性后添加 --incognito 即可。
實際上,Chrome 為安裝的瀏覽器應用創建的快捷方式,和它為不同的用戶創建的快捷方式也都是通過添加標識和參數實現的。
文章寫到現在,筆者的桌面已經堆了不少配圖。由于個人習慣邊寫邊配圖,需要用的圖片已經自動上傳圖床,桌面上的圖片大概率不會再用到了。我期望將它們快速移動到一個文件夾中,讓桌面上新放的圖更好找到。
截圖和制圖工具自動生成的圖片命名全都以年份(2021)開頭,所以這個操作用 PowerShell 實現起來并不難:
ni archive -Type Directory -Force; mv 2021* -Destination .\archive\
想要用快捷方式調用 PowerShell,可以找找 pwsh.exe( PowerShell 7 的 exe 名稱)有沒有給什么提示:在終端輸入 pwsh.exe -h,發現可以用 -c 參數調用命令:
接下來,我們用向導的方式創建這樣一個快捷方式。在桌面 右鍵 > 新建 > 快捷方式,輸入pwsh.exe -nol -c ni archive -Type Directory -Force; mv 2021* -Destination .\archive\,-nol 是不加載 Logo,會讓命令處理更快一點。
輸入完名稱后,右鍵剛才創建的快捷方式,修改以下信息:
然后,將焦點移到桌面,按下預先設置好的快捷鍵或者點按此快捷方式圖標,所有圖片立刻歸檔完成。
第四個例子是為了補充一種情況——資源管理器本身的特殊參數。我們都使用過系統自動創建的回收站、控制面板、下載文件夾等快捷方式,但它們是如何工作的,用戶能不能自行創建這些關鍵位置的快捷方式呢?
事實上,這些資源管理器內部的特殊位置是由系統在注冊表中定義的,HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions中包含了幾乎所有這類關鍵位置的信息。每一個位置都對應著獨一無二的名稱(Name 鍵數據)和 GUID(項)。例如桌面文件夾對應的名稱是 Desktop,GUID 是{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}。
TenForums 據此整理了兩份(按名稱,按 GUID)列表大家也可以參考。
在快捷方式中調用它們也很簡單,方法是使用 explorer.exe shell:Name 或者 explorer.exe shell:::GUID。舉例來說,想要創建一個直達聲音設置界面的快捷方式,可以使用右鍵,新建快捷方式,其內容填explorer.exe shell:::{F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D}。
以上四個例子,涵蓋了絕大多數種類的應用。不難看出快捷方式創建過程并不復雜,可能會難住讀者的是找到應用支持的標識參數的方法。這是有規律可循的:
一個指向某資源的具體地址,如 https://example.com,被稱為 URL。這串字符作為命名方式而言的第一級就是 URI Scheme(統一資源標志符方案)。我們最常見的 HTTPS 只是 數以百計 URI 方案中的一種。正如同我們能不通過網站主頁用 URL 直接打開某一篇文章一樣,URI 亦可以用于打開軟件內的某一個位置。
若讀者在瀏覽器上搜索過 Windows 商店應用,點擊安裝,瀏覽器會彈出「打開 Microsoft Store」的提示,點擊后會跳轉到 Windows Store。這就是 Windows 上 URI Schemes 的簡單應用。
將 URI Schemes 用于快捷方式的講解也像上一節一樣,先看幾個用例,個中要點放在小結部分。
作為筆者的主力筆記應用,Obsidian 中有一些使用非常頻繁的筆記,例如 Todo,快速筆記等。要是能有迅速打開這些筆記的快捷方式自然再好不過。Obsidian 并沒有提供好用的標識參數,所以不妨求助于同樣強大的 URI Schemes。
以 obsidian URI Schemes 為關鍵詞搜索,能找到開發者對 Obsidian URI 的詳細解釋文檔。
當然,我們的目標只是找到打開 Obsidian 某條目的快速方法。使用過 Obsidian 的讀者應該能發現右鍵某個條目會有 復制 Obsidian URL 的選項,我們需要的就是這樣一個鏈接。
同樣使用右鍵調出創建向導,在彈出的內容中填寫剛剛復制的 URI,一個快捷方式就創建完成了。如果還有其他需要快速調用的筆記,也可以如此操作。
和要好的朋友聊天、寫郵件,有什么東西需要立刻和朋友分享,這些操作都需要進入客戶端后選擇聊天對象。能不能更簡便一點,直接喚起和某人的聊天呢?只要應用支持,這是能夠實現的。
檢索的方式仍然是 應用名 uri schemes,根據搜索到的提示,我在快捷方式創建向導的目標位置框中填入下面三個內容:
經過筆者 查閱,微信 PC 端曾經支持類似的功能,但目前只能用 weixin: 喚起微信主界面。飛書亦 支持 lark: 開頭的外部請求,但喚起聊天界面需要對方的 OpenID。
作為 Windows 的特點之一,控制面板與更現代的設置兩代同堂的局面已經持續很久。不難發現是它們倆可以相互跳轉到某項功能的子界面。通過上一個節的第四部分,我們知道控制面板內的條目能用 GUID 等方式調用,那么更現代的設置是怎么做的呢?答案是 URI。
以 ms-settings URI schemes 為關鍵詞檢索,能發現微軟給出的 官方文檔,里面詳細列舉了以 ms-settings 開頭的各類可用 URIs。
這些 URIs 是被設計為供開發者調用的,作為用戶的我們也可以按照自己的需要將它們創建為快捷方式。比如說,筆者認為通過任務管理器導航到開機自啟管理界面過于麻煩,那么我可以使用右鍵,創建快捷方式,在對象位置一欄中寫入 ms-settings:startupapps。將此快捷方式移動到開始菜單,以后就能直接點擊或者搜索 開啟自啟 來訪問此項設置了。
微軟的許多 UWP 類型的系統應用,例如 Edge、商店、人脈,都提供了 URI Scheme 支持。對于一些變量,例如默認瀏覽器、默認視頻播放器,Windows 也有對應的 URIs 可供調用。
Windows 下想要知道哪些應用支持 URI 調用還是很簡單的:URI Schemes 在注冊表中被表述為 URL Protocol,要使用 URI 的應用必須在注冊表中新建一個帶有 URL Protocol 字符串的項2。我們可以通過瀏覽 HKCR ,來確認某應用的 URI Scheme 支持情況。如下圖所示,能看到 BiliBili UWP 版注冊了 bilibili:
對于系統應用和 Windows Store 應用而言,我們也可以從 Windows 設置 > 默認應用 > 按協議指定默認應用(Windows 11 改名為 按鏈接類型指定默認應用)界面尋找已經被注冊的各類 URI Schemes。不過此面板不會顯示一些傳統應用。
然而試圖查閱到一個可用的 URI 相對而言較為困難。URI 方案后的行為、查詢參數大部分情況下用于供開發者進行應用內跳轉,不會暴露給用戶。并且由于 安全問題,不少應用都限制了從外部直接調用程序功能。
所幸 URIs 往往會兼顧多平臺的通用性,Windows、iOS、Android 系統上同一個應用的 URI Scheme 用法有可能是一樣的。
要是不確定一個 URI Scheme 是否起作用,讀者在將它們寫入快捷方式之前,可以先使用資源管理器的地址欄做實驗,效果符合預期再行動也不遲。
就能力而言,快捷方式顯然比不上腳本等手段。首先它的目標路徑只能填一行,本文第二節雖然有用快捷方式執行多條命令的用例,但這顯然不如腳本來得優雅;其次,快捷方式是靜態的,想要為它加一些變量,例如打開 Obsidian 這一周的周志、用電報發送剪貼板內容,快捷方式實現起來就較為吃力,需要其他工具從旁輔助。
然而其優勢也是很明顯的——用起來簡單方便。將目標寫好,和我們交互的就只是一個帶箭頭的小圖標。我們可以雙擊;可以將它們放在開始菜單中用于檢索;還可以固定到任務欄,用 Windows + 數字鍵啟用。快捷方式本身也是一個文件,它們可以被保存、備份、遷移,只要路徑正確就能成功運行。
除了能用在快捷方式上,本文介紹的標識和 URI Schemes 也能用于 Windows 注冊表、AutoHotkey,JS 腳本等其他地方,因而第二、三節的小結部分或許還有本文主旨之外的參考價值。
本文的意義僅在于提供應用的思路,揭示更多操作的可能性。真正適合自己的用法還需要讀者自行探索。