2010/10/19

Windows Virtual PC でアプリを閉じてから仮想マシンを休止するまでの時間を調整する

Windows Virtual PCの仮想マシン (Windows XP Mode など) をアプリケーション統合モードで利用している場合、ウィンドウ右上の[×]をクリックするなどしてアプリケーション ウィンドウを閉じても、仮想マシンはバックグランドで動作し続けます。再びスタートメニューから仮想マシンのアプリケーションを起動すると、仮想マシンは既に動作しているのですぐにアプリケーションも起動します。ただし、アプリケーション ウィンドウを閉じて、しばらく放っておくと、仮想マシンは勝手にというか、自動的に「休止状態」になります。

時計とにらめっこして注意深く観察してみればわかりますが、アプリケーション ウィンドウを閉じてから仮想マシンが休止状態になるまでの時間は、既定で5分 (300秒)です。この時間、調整したくないですか? あるいは、仮想マシンを休止させずに動かし続けたくはないですか? 「既定で5分」と言ったからには、この時間は調整できます。

アプリケーション統合モード利用時の仮想マシンの休止までの時間は、Windows Virtual PC COM InterfaceSetConfigurationValue メソッドを使用して、ui_options/seconds_to_save という構成値に秒数を設定することで変更できます。ui_options/seconds_to_save が未設定の場合、既定値の 300 秒が有効です。ui_options/seconds_to_save の値には、0 または 20 秒 ~ 4294968 秒 (約50日) が設定できます。0 を設定した場合、仮想マシンは休止状態にならずに、実行し続けます。1~19を設定した場合は 20 に設定したのと同じ、4294969 以上の値は 4294968 に設定したのと同じになります。

次の例は、Windows XP Mode の仮想マシン (仮想マシン名 Windows XP Mode) を休止しないようにする WSH スクリプトです。設定するにはコマンドプロンプト (管理者への昇格は不要) で cscript set_vmconf.vbs を実行します。

実は、SetConfigurationValue メソッドは、仮想マシン構成ファイル (.vmc) に設定値を書き込むものです。このスクリプトを実行すると、Windows XP Mode.vmc の <ui_options>~</ui_options>に <seconds_to_save type="integer">0</seconds_to_save> が書き込まれます。休止までの時間設定は、仮想マシンごとの構成の一部というわけです。


仮想マシン構成ファイル (.vmc)はメモ帳などのテキストエディターでも編集可能ですが、推奨されない方法です。SetConfigurationValue メソッドを利用すると、安全に設定を書き込むことができます。また、実行中の仮想マシンの仮想マシン構成ファイル (.vmc)は編集がロックされますが、SetConfigurationValue メソッドを使用すると書き込むことができます。

[set_vmconf.vbs]
Option Explicit
Dim targetVM, objVPC, objVM

targetVM = "Windows XP Mode"

Set objVPC = CreateObject("VirtualPC.Application")
Set objVM = objVPC.FindVirtualMachine(targetVM)
If objVM is Nothing Then
  WScript.echo targetVM & " が見つかりません。"
Else
  objVM.SetConfigurationValue "ui_options/seconds_to_save", 0
End If

0 件のコメント: