🦊
Windows Sandbox触ってみた
概要
Windows SandboxはWindows 10で使えるクリーンインストール状態のWindows仮想環境(サンドボックス環境)です。
※Windows11環境は現在この記事のスコープ外です
動作環境
Windows 10 Professional以上のエディション
(Windows 10 Homeは利用不可)
インストール手順
- コントロールパネル->プログラム->Windowsの機能の有効化あるいは無効化
- Windowsサンドボックスにチェック
- 再起動
使い方
- .wsbファイルを作成して実行
- pywinsandboxを利用して実行する
.wsbファイル
.wsbファイルの設定例
.wsbファイルにXML形式で設定を記述する.
.wsbファイルをダブルクリックすると設定した内容でWindows Sandoboxが起動します.
設定の詳細はこちらを参照
https://docs.microsoft.com/ja-jp/windows/security/threat-protection/windows-sandbox/windows-sandbox-configure-using-wsb-file
<Configuration>
<VGpu>Disable</VGpu>
<Networking>Disable</Networking>
<MappedFolders>
<MappedFolder>
<!-- ディレクトリは絶対パス指定のみ可 -->
<HostFolder>C:\Users\user\Desktop\hello_world</HostFolder>
<!-- マウント先ディレクトリ. 未指定の場合デスクトップにマウントされる -->
<SandboxFolder>C:\Users\WDAGUtilityAccount\Desktop\sandbox</SandboxFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
</MappedFolders>
</Configuration>
.wsbファイルの代わりにpywinsandboxを利用する
pywinsandboxインストール
pip install pywinsandbox
# conda環境の場合はcondaのpywin32を削除し、pip版pywin32を追加インストールしてください
設定例 (.wsbファイルと比べると設定項目は少ないですがディレクトリ指定で相対パスが使える等のメリットがあります)
詳細はこちら参照
https://github.com/karkason/pywinsandbox
import os
import winsandbox
sandbox = winsandbox.new_sandbox(
folder_mappers=[winsandbox.FolderMapper(os.getcwd())],
networking=False,
logon_script=f"explorer"
)
注意事項
バージョン1.2.0ではREADMEに書いてある sandbox.rpyc.modules
のAPIを使用するとエラーが出ることがあるようです.
https://github.com/karkason/pywinsandbox/issues/14
ざっくりどんな設定ができるか。
.wsbファイルやpywinsandboxを使うことで仮想環境の詳細設定をすることができます。
Logonコマンドを設定することでWindows Sandboxの環境構築等の利用をすることができるかと思います。
設定項目 | 概要 |
---|---|
仮想GPU | DirectXで使用する仮想GPU※CUDA使用不可 |
ネットワーク | 仮想環境のネットワーク設定 |
マップされたフォルダー | ホストのディレクトリを仮想環境にマウントreadonly設定可 |
クリップボード | ホストとクリップボードの共有設定 |
メモリ設定 | 仮想環境のメモリ設定 |
Logon コマンド | サンドボックス起動時に仮想環境側で実行する実行するコマンド |
Discussion
記事を書いておいてアレですが、ガッツリ自動化したいならTerraform + Docker Windowsインスタンス + chocolatey使った方が環境構築が楽かもしれないです。
Windows Sandbox環境で自動でスクリプト実行させるにはバッチスクリプト or PowerShellでLoginスクリプト書かないといけないですので。