ブート時に起動される複数の VMWare Player マシンを備えた Windows 7 ボックスがあります。WMWare VIX とバッチ ファイルを使用して、次のように仮想マシンをシャットダウンします。
"C:\path\to\VMWare VIX\vmrun.exe" -T player stop "C:\path\to\machine.vmx" soft
私が達成したいのは、ホスト マシンがシャットダウンされたときにこれらのコマンドを実行して、各 VM を個別にシャットダウンする必要がないようにすることです。展開すると、[スタート] メニューからではなく、ACPI 電源ボタンを短く押すことでシャットダウンが開始される可能性があります。私が試した方法はうまくいきません(少なくとも十分ではありません):
グループ ポリシー - 最も明白な方法ですが、Windows 7 では、シャットダウン スクリプトを「非同期で」実行するオプションがなくなりました。
その結果、Windows は最初に開いているすべてのウィンドウを閉じるように指示し、VM は使用中であると応答し、[強制的に閉じる] ダイアログが表示されます。VMWare Player と他のすべてが閉じられた後でのみ、スクリプトが実行されますが、役に立ちません。
これは変更できると思うかもしれませんが、「いいえ、申し訳ありません」という行に沿って公式のMSノートを見たのを覚えていると思います. しかし、リンクが見つかりません。通常のシャットダウン ボタンの代わりに、すべての VM を閉じてからホストをデスクトップ ショートカットとしてシャットダウンする 1 つのバッチ ファイルを使用します。-動作します。それは、開発中に現在使用しているものです。
ただし、ACPI 電源ボタンを使用すると、以前と同じ結果で通常のシャットダウンが開始されます。また、マシンの電源を毎日オン/オフするエンド ユーザーがモニターとマウスを使用する必要がない方がよいでしょう。
現時点で私が探しているのは、物理的な電源ボタンを押したときに呼び出されるアクションを変更する方法です。Windows では、スリープ、休止状態、再起動などのいくつかの異なるアクションから選択できますが、それを「この .bat を実行する」に変更できますか? それとも、shutdown コマンドの動作を完全に変更しますか?プログラムでシャットダウン メッセージをインターセプトし、シャットダウンを中止し、バッチ ファイルを実行し、シャットダウンを再開します。ここ、 ここ 、ここなど、シャットダウンのインターセプトについていくつかの議論がありましたが、RubyまたはJavaを除くすべての言語で、この場合にそれを行うことができるかどうか、およびどのように行うことができるかを本当に理解するには、私はまだあまりにも無知です. 誰かが実際にこれを機能させる方法を明確にすることができれば (「強制終了」画面で動けなくなることなく)、あなたが提供する言語を試してみたいと思っています.