こんにちは、阿久津です。昨日、Microsoftの統合開発環境である「Visual Studio 2013 Update 3」と、「Windows Phone 8.1 Update 1 SDK and Emulators」がリリースされました。最近Windows Phoneに関心を持つ筆者としては気になるニュースです(図01)。

図01 今回リリースされたWindows Phone 8.1エミュレーター。Update 1が適用されています

Visual Studio上で実行するWindows Phoneエミュレーターは、Hyper-Vの有効化が欠かせません。しかし、Hyper-Vを有効な環境に、定番仮想化ソフトウェアであるVMware Player/VMware Workstationをインストールしますと、「Microsoft Hyper-Vがインストールされているコンピューターにはこの製品をインストールできません」というメッセージが現れます。

Windows 8.1インストール後にHyper-Vを有効にせずに、VMware Playerなどをインストールすればメッセージは回避できるため、問題も解決できるように見えることでしょう。しかし、仮想マシン実行時に「~Hyper-Vの役割を削除してください」というメッセージが現れるため、結局のところHyper-VとVMware製品の共存はできません(図02~03)。

図02 VMware Playerインストール後にHyper-Vを有効化。一見すると動作するように見えます

図03 Hyper-Vの無効化をうながすメッセージが現れるため、仮想マシンを起動できません

しかし、1つの抜け穴があります。それが、Windows 8.1でも使われているBCD(ブート構成データ)ストアを編集するコマンド「bcdedit.exe」を使用し、Hyper-V機能の有無を制御するという方法。たとえば管理者権限で起動したコマンドプロンプトから「bcdedit /set hypervisorlaunchtype off」と実行すれば、Hyper-Vが無効になり、「bcdedit /set hypervisorlaunchtype auto」と実行すれば、Hyper-Vが有効になります(図04)。

図04 管理者権限で起動したコマンドプロンプトで「bcdedit /format /?」を実行しますと、Hyper-Vの有無を設定できます

しかし、いちいちコマンドを入力し、OSの再起動を実行するのも面倒な話です。そこで今週は、Hyper-V実行環境とVMware実行環境を切り替えるバッチファイルを作成し、そのバッチファイルをスタート画面から呼び出すチューニングをお届けしましょう。

1. メモ帳を起動します。
2. Hyper-Vを有効/無効にするバッチファイルを作成します。
3. バッチファイルのショートカットファイルを作成します。
4. ショートカットファイルのプロパティダイアログから<管理者として実行>を有効にします。
5. ショートカットファイルを「%APPDATA%\Microsoft\Windows\Start Menu\Programs」フォルダーに移動します。
6. アプリビューからピン留めします。

これでチューニングが完了しました(図05~16)。

図05 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「notepad」と入力して<OK>ボタンをクリックします

図06 メモ帳が起動したら下記カコミの内容を入力して、<×>ボタン→<保存する>ボタンと順にクリックします

@echo off
bcdedit /set hypervisorlaunchtype off
shutdown /r /t 0

図07 任意のフォルダーを選択してから、テキストボックスに「"Disable-HyperV.bat"」と入力して<保存>ボタンをクリックします

図08 同様の手順でメモ帳に下記カコミの内容を入力して、<×>ボタン→<保存する>ボタンと順にクリックします

@echo off
bcdedit /set hypervisorlaunchtype auto
shutdown /r /t 0

図09 任意のフォルダーを選択してから、テキストボックスに「"Enable-HyperV.bat"」と入力して<保存>ボタンをクリックします

図10 作成したバッチファイルを任意の場所(ここではユーザープロファイルフォルダー)に移動し、ショートカットファイルを作成します

図11 [Alt]+[Enter]キーを押すなどして、ショートカットファイルのプロパティダイアログを開き、<詳細設定>ボタンをクリックします

図12 ダイアログの<管理者として実行>→<OK>ボタン→<OK>ボタンと順にクリックします

図13 もう1つのバッチファイルにも同様の操作を適用してください

図14 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「shell:programs」と入力して<OK>ボタンをクリックします

図15 各ショートカットファイルをプログラムフォルダーに移動させてください

図16 アプリビューを開くと現れるショートカットファイルを右クリック。メニューから<スタート画面にピン留めする>をクリックします

では、結果を確認してみましょう。スタート画面のタイルをクリックすれば、バッチファイルに記述した「bcdedit.exe」コマンドで、Hyper-Vの有効もしくは無効を実行。続いて「shutdown.exe」コマンドで、コンピューターの再起動を実行します(図17)。

図17 ご覧のとおりスタート画面に各ショートカットファイルがタイルとして現れます

当初は別のユーザーでコマンドを実行する「runas」コマンドをバッチファイルに組み込もうと思いましたが、一般的なWindows 8.1の場合、Administratorアカウントは無効になっているため見送りました。また、レジストリから管理者権限を持つショートカットを呼び出すとエラーになってしまうため、スタート画面のピン留めにとどめた次第です(図18)。

図18 レジストリから管理者権限を付加したショートカットファイルは実行できませんでした

いずれにせよ、コンピューターの再起動が必要になるため、シームレスと言い難いのが難点ですが、Hyper-VでサポートしていないOSを動かすためにVMware Playerなどを併用している方には有効な手段となるのではないでしょうか。

それでは、また次号でお目にかかりましょう。

阿久津良和(Cactus)