Linux 版 VMware Server 2.0 の導入に合わせて Windows クライアントも Windows 版 VMware Server 2.0 に入れ替えたが、デフォルトの状態だと激重で苦しいので、普段仮想マシンを動かす必要がないときは、関連サービスを止めておいた方が断然楽だ (苦しくない方はそのままでどうぞ)。
しかしその関連サービスは複数あって、毎回チマチマと起動/停止させるのは面倒。そこでバッチファイルで一括制御することにした。
Windows XP 上で servises.msc (管理ツール → サービス) を見るとわかるように、 VMware Server 2.0 は以下の 6個のサービスから構成される。
- VMware Authorization Service
- VMware DHCP Service
- VMware Host Agent
- VMware NAT Service
- VMware Server Web Access
- VMware VSS Writer
これらのサービスのプロパティで依存関係を確認すると、起動時は "6." → "3." → "1."、停止時は "1." → "3." → "6." の順で依存していて、"2."、"4."、"5." が単体で動作していることがわかる。試しに全てのサービスが停止しているとき、services.msc 上で "6." を起動させると依存関係にある 2つのサービスも同時に起動し、全てのサービスが起動しているときに "1." を停止させれば、依存関係にある 2つのサービスも同時に停止させていいか確認されるはずだ。
まず上記 6個のサービスの自動起動を無効にするため、プロパティを開いて 「スタートアップの種類」 を全て 「手動」 に変更しておく。
次に、サービスの状態を制御するバッチファイルを用意し、%windir% や system32 等のデフォルトでパスが通った場所か、自身でパスを通した任意の場所にコピーする。実行は 「ファイル名を指定して実行」 から引数を与えてコマンド操作することを想定しているが、もちろんバッチファイルのショートカットを作ってデスクトップやメニューに登録し、マウスでつついてもいい。僕は vmsv.bat と言うファイル名で作成し、system32 フォルダーに放り込んだ。
ごく簡単なバッチファイルの例は、以下の通り。
if /i "%1" equ "start" goto START
if /i "%1" equ "stop" goto STOP
goto HELP
rem ### HELP ###
:HELP
echo.
echo Usage: vmsv start^|stop
echo start Start VMware Server Services.
echo stop Stop VMware Server Services.
echo.
pause
goto END
rem ### START ###
:START
rem Start: VMware VSS Writer -> VMware Host Agent -> VMware Authorization Service
net "%1" "VMware VSS Writer"
rem Start: VMware DHCP Service
net "%1" "VMware DHCP Service"
rem Start: VMware NAT Service
net "%1" "VMware NAT Service"
rem Start: VMware Server Web Access
net "%1" "VMware Server Web Access"
goto END
rem ### STOP ###
:STOP
rem Stop: VMware Authorization Service -> VMware VSS Writer -> VMware Host Agent
net "%1" "VMware Authorization Service" /yes
rem Stop: VMware DHCP Service
net "%1" "VMware DHCP Service"
rem Stop: VMware NAT Service
net "%1" "VMware NAT Service"
rem Stop: VMware Server Web Access
net "%1" "VMware Server Web Access"
goto END
:END
この例だと 「ファイル名を指定して実行」 で vmsv start とタイプすれば全関連サービスが起動し、vmsv stop で停止。start か stop 以外の引数が渡されるか、引数がない場合は、使い方を表示して終了、と言う単純なもの。各サービスの状態確認はしていないが、特に問題はないと思う。
ちなみに僕は、パスを通した任意のフォルダー中に各種アプリケーションやよく使うファイルのショートカットを入れておき、「ファイル名を指定して実行」 をランチャーとして愛用している。「ファイル名を指定して実行」 はショートカットキー [Win] + [R] で反応するので、例えば Firefox のショートカットを "ff" (実際には "ff.lnk")、Winamp のショートカットを "wa" (同 "wa.lnk") と言うファイル名にしてランチャー用フォルダーに入れておけば、[Win]+[R] → ff [Enter] で Firefox 、[Win] + [R] → wa [Enter] で Winamp がそれぞれ起動する。コマンド操作がそれほど好きでない方には、積極的にはお勧めしないが・・・。