Windows起動時にVirtualBoxゲストOSを自動起動させる

仮想ネットワーク内のDNSサーバがいまして、こいつは常時起動させておかないと困るなぁと思い、自動起動させるようにしてみました。
自分でやってて軽くはまったので、メモ的にエントリーしておきます。

環境

  • Windows XP SP3
  • Sun xVM VirtualBox 3.1.0

以下の記載において、ファイルパス名などは適宜置き換えてください。

下準備

自動起動したいゲスト機のUIDを調べておきます。
「VBoxManage.exe」コマンドを使います。

c:\> "C:\Program Files\Sun\VirtualBox\VBoxManage.exe list vms
"Cobalt" {1ff5f06d-f46b-4bbf-aa61-00b1e8cd257d}
"Sienna" {616ff3fc-8e7d-434e-bea8-070f4b1fc4c2}

{}の中がUIDです。

起動停止スクリプト

今回はVBScriptで書きます。
BATファイルで「cmd start ~~」でもいいのですが、起動時のプロンプト画面が邪魔になるので。
ポイントは「8.3形式でパスを書く」ところです。

起動スクリプト

Option Explicit

Const vbHide = 0             'ウィンドウを非表示
Const vbNormalFocus = 1      '通常のウィンドウ、かつ最前面のウィンドウ
Const vbMinimizedFocus = 2   '最小化、かつ最前面のウィンドウ
Const vbMaximizedFocus = 3   '最大化、かつ最前面のウィンドウ
Const vbNormalNoFocus = 4    '通常のウィンドウ、ただし、最前面にはならない
Const vbMinimizedNoFocus = 6 '最小化、ただし、最前面にはならない

Dim objWShell

Set objWShell = CreateObject("WScript.Shell")
objWShell.Run "C:\PROGRA~1\Sun\VIRTUA~1\VBOXHE~1.EXE --startvm 616ff3fc-8e7d-434e-bea8-070f4b1fc4c2", vbHide, False
Set objWShell = Nothing

停止スクリプト

仮想マシンのシャットダウンではなく、VirtualBoxの状態保存を使って速度向上を図ってます。

Option Explicit

Const vbHide = 0             'ウィンドウを非表示
Const vbNormalFocus = 1      '通常のウィンドウ、かつ最前面のウィンドウ
Const vbMinimizedFocus = 2   '最小化、かつ最前面のウィンドウ
Const vbMaximizedFocus = 3   '最大化、かつ最前面のウィンドウ
Const vbNormalNoFocus = 4    '通常のウィンドウ、ただし、最前面にはならない
Const vbMinimizedNoFocus = 6 '最小化、ただし、最前面にはならない

Dim objWShell

Set objWShell = CreateObject("WScript.Shell")
objWShell.Run "C:\PROGRA~1\Sun\VIRTUA~1\VBOXMA~1.EXE controlvm 616ff3fc-8e7d-434e-bea8-070f4b1fc4c2 pause", vbHide, True
objWShell.Run "C:\PROGRA~1\Sun\VIRTUA~1\VBOXMA~1.EXE controlvm 616ff3fc-8e7d-434e-bea8-070f4b1fc4c2 savestate", vbHide, True
Set objWShell = Nothing

登録

WindowsXPのログオン・ログオフスクリプトに登録します。
(何故かスタートアップ・シャットダウンスクリプトでは起動しませんでした)

設定にはグループポリシーエディタを使う必要がありますが、標準では管理ツールにありません。
「ファイル名を指定して実行」で「gpedit.msc」を入力し、実行します。

参考 : Windows 2000/XP/2003 グループポリシーエディタを開く方法

「ユーザの構成」→「Windowsの設定」→「スクリプト(ログオン/ログオフ)」で、上で作成したVBScriptを登録します。

 


 

これで自動起動されるはずです。

 

トラックバック(0)


トラックバックを送る際には、この記事へのリンクを記事内につけてください。

トラックバックはありません。

コメント(0)

コメントはありません。

コメントを投稿してください。