以前にも書いた超お手軽に使い捨て仮想マシンを立ち上げられるWindows Sandbox。
最近ではかなり進化していて、ホストOSとのフォルダ共有やログオンスクリプトなどの設定をあらかじめ定義しておける.wsbファイルなるものがある。
メモ帳とかで構成を定義して sandbox.wsb
のような名前で保存。ダブルクリックで実行するとWindows Sandboxが立ち上がる。
ただのXMLファイルといえばそうだけど書き方メモっておかないと忘れるので書いておく。
よく使う設定
<Configuration> <!-- メモリ8GB --> <MemoryInMB>8192</MemoryInMB> <!-- ネットワークを無効化 --> <Networking>Disable</Networking> <!-- ホストマシンと特定のフォルダを共有 --> <MappedFolders> <MappedFolder> <HostFolder>C:\sandbox</HostFolder> <SandboxFolder>C:\sandbox</SandboxFolder> <ReadOnly>false</ReadOnly> </MappedFolder> </MappedFolders> <!-- 起動時にスクリプト実行 --> <LogonCommand> <Command>C:\sandbox\logon.cmd</Command> </LogonCommand> </Configuration>
wsbファイルの基本構造
wsbファイルはXML形式で記述され、以下のような基本構造。
<Configuration> <!-- 設定項目をここに記述 --> </Configuration>
設定項目一覧
タグ | 意味 | 設定値 |
---|---|---|
<VGpu> |
仮想GPUの有効/無効 | Enable (有効化)Disable (無効化)Default (デフォルト設定) |
<Networking> |
ネットワークの有効/無効 | Enable (有効化)Disable (無効化)Default (デフォルト設定) |
<MappedFolders> |
ホストとサンドボックス間でフォルダーを共有 | <MappedFolder> タグ内で詳細設定を記述 |
<LogonCommand> |
起動時に実行するコマンド | <Command> タグ内にコマンドを記述 |
<AudioInput> |
オーディオ入力の有効/無効 | Enable (有効化)Disable (無効化)Default (デフォルト設定) |
<VideoInput> |
ビデオ入力の有効/無効 | Enable (有効化)Disable (無効化)Default (デフォルト設定) |
<ProtectedClient> |
RDPセッションのセキュリティ設定を強化 | Enable (有効化)Disable (無効化)Default (デフォルト設定) |
<PrinterRedirection> |
プリンターのリダイレクト有効/無効 | Enable (有効化)Disable (無効化)Default (デフォルト設定) |
<ClipboardRedirection> |
クリップボードのリダイレクト有効/無効 | Enable (有効化)Disable (無効化)Default (デフォルト設定) |
<MemoryInMB> |
サンドボックスに割り当てるメモリ容量(MB単位) | 数値(例: 1024, 2048) |
フォルダー共有設定例
タグ | 意味 | 設定値 |
---|---|---|
<MappedFolder> |
共有するフォルダーを設定 | |
<HostFolder> |
ホスト側フォルダーの絶対パス | C:\Users\user\Documents |
<SandboxFolder> |
サンドボックス側のパス | C:\Users\WDAGUtilityAccount\Documents |
<ReadOnly> |
読み取り専用設定 | true (有効化)false (無効化) |
サンドボックスのユーザー名は WDAGUtilityAccount
に固定されているためデスクトップを共有したければ次のようになる
<MappedFolders> <MappedFolder> <HostFolder>C:\Users\user\Desktop</HostFolder> <SandboxFolder>C:\Users\WDAGUtilityAccount\Desktop</SandboxFolder> <ReadOnly>true</ReadOnly> </MappedFolder> <MappedFolders>
MappedFolder
は複数設定することもできる
<MappedFolders> <MappedFolder> <HostFolder>C:\Users\user\Documents</HostFolder> <SandboxFolder>C:\Users\WDAGUtilityAccount\Documents</SandboxFolder> <ReadOnly>true</ReadOnly> </MappedFolder> <MappedFolder> <HostFolder>C:\scripts</HostFolder> <SandboxFolder>C:\scripts</SandboxFolder> <ReadOnly>true</ReadOnly> </MappedFolder> <MappedFolders>
設定例
基本設定
以下は、ネットワークを無効化し、仮想GPUを無効化した設定例。
<Configuration> <VGpu>Disable</VGpu> <Networking>Disable</Networking> </Configuration>
フォルダー共有と起動コマンドの設定
ホストのC:\Users\user\Desktop\shared
フォルダーをサンドボックスのC:\Shared
に共有し、起動時にメモ帳を開く設定例。
<Configuration> <MappedFolders> <MappedFolder> <HostFolder>C:\Users\user\Desktop\shared</HostFolder> <SandboxFolder>C:\Shared</SandboxFolder> <ReadOnly>false</ReadOnly> </MappedFolder> </MappedFolders> <LogonCommand> <Command>notepad.exe</Command> </LogonCommand> </Configuration>
メモリ割り当てとクリップボード無効化
サンドボックスに2048MBのメモリを割り当て、クリップボード共有を無効化した設定例。
<Configuration> <MemoryInMB>2048</MemoryInMB> <ClipboardRedirection>Disable</ClipboardRedirection> </Configuration>
ログオンスクリプトによって7-zipをインストール
- ホストOSの
C:\sandbox
に7z2409-x64.exe
とlogon.cmd
を置いておく logon.cmd
に7-zipなどのアプリのサイレントインストールコマンドを書いておく- ホストOSの
C:\sandbox
を サンドボックスのC:\sandbox
にマッピング LogonCommand
設定にてlogon.cmd
が実行されるようにする
sandbox.wsb ファイル
<Configuration> <!-- ホストマシンと特定のフォルダを共有 --> <MappedFolders> <MappedFolder> <HostFolder>C:\sandbox</HostFolder> <SandboxFolder>C:\sandbox</SandboxFolder> <ReadOnly>true</ReadOnly> </MappedFolder> </MappedFolders> <!-- 起動時にスクリプト実行 --> <LogonCommand> <Command>C:\sandbox\logon.cmd</Command> </LogonCommand> </Configuration>
logon.cmd ファイル
C:\sandbox\7z2409-x64.exe /S
まとめ
- ファイル名: wsbファイルは
.wsb
拡張子で保存する必要あり。 - 文字コード: UTF-8形式で保存。
- セキュリティリスク: フォルダー共有やネットワークを有効化する場合、ホストOSへの影響を考慮すること(Cドライブまるごと共有とかしてたらサンドボックスの意味があまり無い気がする)。
- 惜しいところ: 現状ウィンドウサイズを設定する項目は無いらしい(これ地味に一番欲しいと思うんだけど)