Linux 版 VMware Server 2.0 の導入に合わせて Windows クライアントも Windows 版 VMware Server 2.0 に入れ替えたが、デフォルトの状態だと激重で苦しいので、普段仮想マシンを動かす必要がないときは、関連サービスを止めておいた方が断然楽だ (苦しくない方はそのままでどうぞ)。

しかしその関連サービスは複数あって、毎回チマチマと起動/停止させるのは面倒。そこでバッチファイルで一括制御することにした。


Windows XP 上で servises.msc (管理ツール → サービス) を見るとわかるように、 VMware Server 2.0 は以下の 6個のサービスから構成される。

  1. VMware Authorization Service
  2. VMware DHCP Service
  3. VMware Host Agent
  4. VMware NAT Service
  5. VMware Server Web Access
  6. VMware VSS Writer

これらのサービスのプロパティで依存関係を確認すると、起動時は "6." → "3." → "1."、停止時は "1." → "3." → "6." の順で依存していて、"2."、"4."、"5." が単体で動作していることがわかる。試しに全てのサービスが停止しているとき、services.msc 上で "6." を起動させると依存関係にある 2つのサービスも同時に起動し、全てのサービスが起動しているときに "1." を停止させれば、依存関係にある 2つのサービスも同時に停止させていいか確認されるはずだ。

まず上記 6個のサービスの自動起動を無効にするため、プロパティを開いて 「スタートアップの種類」 を全て 「手動」 に変更しておく。

次に、サービスの状態を制御するバッチファイルを用意し、%windir% や system32 等のデフォルトでパスが通った場所か、自身でパスを通した任意の場所にコピーする。実行は 「ファイル名を指定して実行」 から引数を与えてコマンド操作することを想定しているが、もちろんバッチファイルのショートカットを作ってデスクトップやメニューに登録し、マウスでつついてもいい。僕は vmsv.bat と言うファイル名で作成し、system32 フォルダーに放り込んだ。

ごく簡単なバッチファイルの例は、以下の通り。

@echo off
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 がそれぞれ起動する。コマンド操作がそれほど好きでない方には、積極的にはお勧めしないが・・・。

Comments are closed.