Home > Windows にまつわる e.t.c.

RemoteApp for Hyper-V(XP)


Windows 7(以下w7)に移行したくても、業務で必要なアプリケーションが Windows XP(以下XP)でしか動作をしないので移行できないケースは良くあります。

w7 の中に Virtual PC を使って仮想の XP PC を作り、その中で XP でしか動作をしないアプリケーションを稼働させるのは良い方法です。このテクノロジーを使ったのが、XP Mode や MED-V です。
ところが、仮想 PC を稼働させるにはそれなりのマシンスペックが必要になるので、できるだけクライアントPCに余計な物はインストールしたくない場合もあるでしょう。

このような時は、リモートデスクトップを使うのがお勧めです。リモートデスクトップ接続は、Windows 7の標準ツールとしてインストールされているので、何かを追加インストールする必要はありません。
嬉しい事に、XPはリモートデスクトップ接続を受け付ける仕組みがあるので、別のマシンでXPを稼働させ、w7 からその XP にリモートデスクトップ接続をすれば、XP 環境を w7 から使うことが出来ます。

XP のデスクトップそのものは不要で、特定のアプリケーションだけ使えれば良いのであれば、XP 上で稼働している特定のアプリケーションを RemoteApp として引っ張り出せば、XP Mode のような感じで XP アプリケーションを w7 上で使用する事が出来ます。

ここで問題になるのが XP を稼働させる環境です。物理 PC 上で稼働させても良いのですが、サーバー室が XP を稼働させる PC だらけになってしまっては本末転倒ですし、今後 XP が稼働する PC の入手は困難になっていきます。
このような場合は、Windows Server 2008 R2 が持っている仮想化機構である Hyper-V 2.0 で XP を稼働させれば設置場所に困ることはありませんし、電気代の節約にもなります。

 

システム構成

今回のシステム構成は以下のようになります。

今回作成する環境

Windows Server 2008 R2 SP1(RC) と Windows 7 SP1(RC) を使用していますが、SP1 は必須ではありません。

 

 

Hyper-V環境の作成

ここをご覧になっている方であれば、ドメインコントローラ(AD DS)のセットアップや、ドメインへのメンバー参加は説明不要だと思いますので、この部分の説明は割愛し、Hyper-V の作成から解説します。

 

Hyper-Vのインストール

Hyper-V を稼働させるサーバー(HV01)をドメインに参加させたら、役割の追加で Hyper-V をインストールします。
Hyper-V を搭載するサーバーでは、複数のネットワークアダプター(以下NIC)使い分けて、親パーティション(ホスト OS)用の NIC と、子パーティション(ゲスト OS)用の NIC は別の NIC を使うのがセオリーですので、2つ以上の NIC を持っている事が推奨されます。1 NIC 構成で Hyper-V を稼働させる事も出来ますが、今回は 3 NIC を持ったマシンを使用しています。

Hyper-Vのインストール

ネットワークアダプターは後で設定するのでそのまま次へ

インストールが完了すると、再起動が求められるので、再起動をするとHyper-Vは既に稼働している状態になっています。

 

仮想ネットワークの設定

Hyper-V のインストールが完了したら、仮想ネットワークマネージャーで子パーティションが使用する NIC を割り当てます。
NICの割り当て時に「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」のチェックを外します。ここをチェックしたままだと、仮想NICを親パーティションで使用する設定になるので、DHCP環境では意図しないIPアドレスを持ってしまい、思わぬネットワークトラブルに見舞われることになります。
1 NIC 構成のマシンを使う場合はこのチェックを入れたままにしますが、複数 NIC 構成のマシンで、子パーティションに専用 NIC を割り当てる場合は必ずチェックを外します。

仮想ネットワークマネージャーの起動

外部仮想ネットワークを追加

割り当てる物理NICを選択し外部仮想ネットワークを追加(管理オペレーティングシステムに... のチェックは外す)

 

仮想ハードディスクと仮想マシンの配置場所の調整

Hyper-V をはじめとする仮想化機構は、その構造上ハードディスク I/O がボトルネックになりやすい傾向にあります。運用サーバーを考えた場合、OS ボリュームに仮想マシンが使用する仮想ディスクを配置していると、全体のパフォーマンスダウンを引き起こす可能性が高くなるので、OS ボリューム以外で仮想マシンを稼働させるのが得策です。
Hyper-V のデフォルトでは、仮想マシンの格納が OS ボリュームになっているので、必要に応じて仮想ハードディスクと仮想マシンの配置場所も変更しておくと良いでしょう。

Hyper-Vの設定

仮想ハードディスクと仮想マシンのデフォルト格納場所を変更する

 

 

XP環境の作成とWindows 7からの接続

Hyper-V環境の準備が出来たら、w7 にデスクトップを提供する仮想 XP 環境を構築し、必要なアプリケーションのインストールと、Windows Update をします。

リモートデスクトップ用の XP とは言え、立派な OS 環境なので、ウイルス対策ソフトは必須となります。今回の環境には Microsoft Security Essentials をインストールしました。

<Microsoft Security Essentials>
http://www.microsoft.com/security_essentials/

 

XP仮想環境の作成

Hyper-V上に XP をインストールするには、子パーティションを作成し、そこに XP をインストールします。子パーティションを作ってしまえば、普通に XP はインストールできますし、ISO イメージを使ったインストールも出来るので、物理マシンに XP をインストールするより楽とも言えます。

仮想マシンを作る際につける名前は、FQDN にしておくと間違いが無いのでお勧めです。

仮想マシンの新規作成

仮想マシン名を付ける(FQDNがお勧め)

メモリの割り当て

接続するネットワークの選択

仮想ハードディスクの作成

インストールメディアの指定

 

作成した子パーティションに接続

仮想マシンを起動

普通にXPがインストールできる

 

統合サービスセットアップディスクのインストール

XP のインストールが終わったら、まずは統合サービスセットアップディスクをインストールします。
この統合サービスは、Hyper-V が準備している仮想デバイスのドライバーと、Hyper-V 上で稼働させるために必要なコンポーネントです。
統合サービスのインストールが終わったら、ドメイン参加、必要アプリケーションのインストール、Windows Update を済ませます。

まずは統合サービスセットアップディスクをインストール

ドメイン参加、必要アプリケーションのインストール、Windows Updateをする

 

XP のリモートデスクトップ有効化

XPの準備が出来たら、リモートデスクトップでこのXPを使えるように設定します。リモート接続を許可は個別のアカウントではなくグループで与えると何かと都合が良いので、本稿では「Domain Users」を設定します。

「このコンピューターにユーザーがリモートで接続することを許可する」にチェックを入れ、リモートユーザーの選択をする

追加

場所

ドメインを指定

オブジェクトの種類

グループにチェック

domain usersを確認

Domain Usersがリモート接続できるようになった

 

仮想 XP のデスクトップを Windows 7 からアクセス

それでは、w7 からリモートデスクトップ接続を使って XP のデスクトップにアクセスしてみましょう。
データの保存等で、XP 側から w7 のローカルディスクにアクセスする必要があるのなら、あらかじめアクセスするボリュームを指定しておく必要があります。
フル画面で XP を使う事も出来ますが、補助的に使うのであればウインドウモードで使うのが良いでしょう。これらの設定はオプションで指定します。

スタートメニューからすべてのプログラム

アクセサリ-リモートデスクトップ接続

オプションを展開

ウインドウモードにするのであればサイズを指定

XPからWindows 7側のローカルディスクをアクセスするのであれば詳細を指定

アクセスするボリュームをチェック

リモートデスクトップ接続をすると、最初は警告が表示されますが、安全な環境で使用しているので次回以降は警告が出ないようにします。

次から問い合わせが出ないようにする

このコンピューターへの接続について今後確認しない

XPへのユーザーIDとパスワード入力

Windows 7上に表示されたXPのデスクトップ

XP上にマッピングされているw7のボリューム

頻繁にリモートデスクトップ接続をするのでしたら、タスクバーにリモートデスクトップ接続を常時表示させておくと素早くアクセスできて便利です。

タスクバーにこのプログラムを表示する

ターゲットのXPをいつも表示するようにする

 

 

XP上で稼働しているアプリケーションだけを取り出す

この状態では、XP のデスクトップ全体が w7 に来てしまうので、一部のアプリケーションだけを使いたいって用途だと使い勝手は良くありません。
一部のアプリケーションだけのリモートデスクトップは RemoteApp と呼ばれるテクノロジーで提供されています。

 

XP に KB961742 をインストール

XP の標準機能では、RemoteApp が提供できないので、RemoteApp を実現するために KB961742 をインストールする必要があります。

<RemoteApp を有効にするための Windows XP SP3 用の更新プログラム>
http://www.microsoft.com/downloads/details.aspx?FamilyID=e5433d88-685f-4036-b435-570ff53598cd&displaylang=ja

ダウンロードした KB961742-v3.exe のインストールには管理者権限が必要なので、管理者アカウントで XP にログインしてからインストールをします。

KB961742-v3のインストール

 

w 7 にはこの機能が標準で入っていますが、Vista の RemoteApp を作るのであれば、 KB961741 をインストールする必要があります。

<RemoteApp を有効にするための Windows Vista SP1 以降用の更新プログラム>

http://www.microsoft.com/downloads/details.aspx?FamilyID=26a2de17-8355-4e8d-8f33-9211e48651fb&displaylang=ja

 

RemoteApp するアプリケーションの設定

RemoteApp として特定のアプリケーションを取り出すには、XPのレジストリに RemoteApp として提供するアプリケーションを登録し、w7 からは、リモートデスクトップクライアントの設定ファイルである .rdp ファイルに取り出すアプリケーションを定義します。

 

XP 側で RemoteApp 公開するプログラムを設定

まずは XP 側のレジストリを設定して、IE6 を RemoteApp で提供するアプリケーションに設定してみましょう。

設定するレジストリは、「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\」下に「Applications\公開名」キーを追加し、以下の値をセットします。

RemoteApp公開用レジストリ
名前 タイプ 備考
CommandLineSetting DWORD 0
IconIndex DWORD 0  
IconPath 文字列 アイコンのパス 必要に応じて
Name 文字列 アプリケーション名  
Path 文字列 アプリケーションのパス  
RequiredCommandLine 文字列 起動時の引数 必要に応じて
SecurityDescriptor 文字列 セキュリティ記述子 必要に応じて
ShortPath 文字列 アプリケーションの短縮パス 必要に応じて
ShowInTSWA DWORD 1  
VPath 文字列 アプリケーションのパス  

レジストリエディタで1つ1つ設定しても良いのですが、ファイルで投入する方が手っ取り早いので、以下の .reg ファイルを参考にしてください。

RemoteApp-IE6.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TsAppAllowList\Applications\IE6]
"CommandLineSetting"=dword:00000000
"IconIndex"=dword:00000000
"Path"="C:\\Program Files\\Internet Explorer\\IEXPLORE.exe"
"VPath"="C:\\Program Files\\Internet Explorer\\IEXPLORE.exe"
"ShowInTSWA"=dword:00000001
"Name"="Internet Explorer 6"

余談ですが、Windows Vista で稼働しているアプリケーションを RemoteApp として取り出す場合には、KB96174 を適用した後に同様のレジストリ設定をします。

<RemoteApp を有効にするための Windows Vista SP1 以降用の更新プログラム>
http://www.microsoft.com/downloads/details.aspx?familyid=097B7478-3150-4D0D-A85A-6451F32C459C&displaylang=ja

w7 の場合は、標準で RemoteApp 機能を持っていますので、レジストリ設定だけで OK です。

 

Windows 7 側に RemoteApp 接続定義を作成

XP 側のレジストリが準備出来たら、.rdp ファイルをテキストエディタで作成します。

full address:s:接続先
disableremoteappcapscheck:i:1
alternate shell:s:rdpinit.exe
remoteapplicationmode:i:1
remoteapplicationprogram:s:||公開名
remoteapplicationname:s:アプリケーション名
remoteapplicationcmdline:s:
drivestoredirect:s:*
prompt for credentials:i:0

先ほど XP 側で公開した IE6 用であれば以下のようになります。

ie6.rdp
full address:s:xp01
disableremoteappcapscheck:i:1
alternate shell:s:rdpinit.exe
remoteapplicationmode:i:1
remoteapplicationprogram:s:||IE6
remoteapplicationname:s:Internet Explorer 6
remoteapplicationcmdline:s:
drivestoredirect:s:*
prompt for credentials:i:0

Vista/7 で RemoteApp を公開する場合は、XP と .rdp の内容が違いますので、以下を参考に .rdp を作成して下さい。

ie6(vista-7).rdp
full address:s:接続先
alternate shell:s:||公開名
remoteapplicationmode:i:1
remoteapplicationprogram:s:||公開名
remoteapplicationname:s:アプリケーション名
drivestoredirect:s:*
prompt for credentials:i:0

 

.rdp ファイルが準備出来たら、.rdp ファイルをダブルクリックするとアプリケーションだけのリモートデスクトップである RemoteApp が起動できます。
最初に接続する際は、ID/パスワードの入力が必要になることもありますが、2回目以降は入力不要になります。

詳細を開く

IDとパスワードの入力

Windows 7 で IE6 が使えるようになった

登録したID/パスワードを変更する場合は、.rdp ファイルを編集して資格情報を削除します。

編集

資格情報の削除

 

RemoteApp を使う際の注意

RemoteApp では、同一ユーザーが複数のアプリケーションを RemoteApp として利用できますが、1つの XP 環境に対して複数ユーザーのアクセスはできません。このため、利用者の数だけ仮想 XP 環境を準備する必要があります。

物によっては、RemoteApp/リモートデスクトップで動かないアプリケーションもありますので、実際に使用できるか否かは事前にテストする必要があります。

アプリケーションメーカーが、仮想環境上でのアプリケーション利用を保障をしていないケースが大半です。このため、メーカーのサポートが期待できませんので、RemoteApp でのアプリケーション利用は自己責任での利用になります。(リモートデスクトップも同様)

ちょっとした Tips ですが、RemoteApp を使う際に IME バーを最小化しないようにしてください。RemoteApp で IME バーを最小化すると、IME バーにアクセスできなくなります。

 

RemoteApp で IME バーにアクセスできなくなった時の復旧方法

RemoteApp の日本語入力は、XP Mode と同様にリモート側(XP側)の IME が使われています。

XP Mode の場合は、IME バーを最小化しても w7 から最小化した IME バーにアクセスできますが、RemoteApp の場合は IME バーを最小化すると w7 から IME バーにアクセスできなくなります。

復旧は、XP にリモートデスクトップ接続して、デスクトップ状態で IME バーを復元するのですが、RemoteApp で接続している場合、アプリケーションを終了しても、ログイン自体は残っている状態になっています。
このため、リモートデスクトップで接続しようとしても、既に RemoteApp としてログインしているので、リモートデスクトップ接続が出来ません。これは、XP のリモートデスクトップは1セッションしか接続できない制限があるためです。

ログインを解除するには、Administrator でリモートデスクトップに接続して、強制的にログアウトさせた後に Administrator をログアウトします。こうすれば、誰もログインしていない状態になるので、利用者権限でリモートデスクトップを開くことができるようになります。
リモートデスクトップ接続が出来たら、最小化されている IME バーを復元します。

Administratorでリモートデスクトップ接続

RemoteAppでログインしているアカウントを強制ログアウト

Administrator ログアウト

ユーザーでリモートデスクトップにログイン

最小化した IME バーを復元

 

 

複数の XP 環境を展開する

XP の RemoteApp とリモートデスクトップ接続は、1ユーザーが占有するので、複数のユーザー利用する場合は、複数の XP 環境を作る必要があります。

必要数分 XP のインストールをしても良いのですが、数が多いとうんざりしてしまいます。
SCVMM (Microsoft System Center Virtual Machine Manager )を使えば展開の省力化はできますが、20-30台程度の小規模展開の場合は有償製品の SCVMM を導入するのが予算的に見合わないケースもあるでしょう。

<System Center Virtual Machine Manager>
http://www.microsoft.com/japan/systemcenter/scvmm/

SCVMM を使わずにできるだけ展開を省力化する方法を紹介します。

 

 

差分ディスクを使って手早く XP 環境を展開する

Hyper-V には差分ディスクを作成する機能があります。差分ディスクではベースディスクからの変更点のみが記録される仕組みなので、ベースとなる XP 環境を作り、ベースとなる XP の VHD ファイルから、必要数分の差分ディスクを作ればインストールの手間を省く事が出来ます。

手順としては、ベースとなる XP を子パーティションに作成し、必要なアプリケーションと統合サービスをインストールし、Windows Update をかけます。
このままで展開してしまうと、SID が重複しまいドメイン参加に支障が出るので、sysprep を使って SID をクリアしてベースとなる VHD にします。

ベースとなる VHD から差分ディスクを必要数作成して、子パーティションを作る際に差分ディスクを指定すれば手早く複数の XP 環境を作ることが出来ます。

 

ベースとなる XP 環境の構築

それでは、ベースとなる XP 環境を作ります。既に子パーティションの作り方は解説済みなので、新たに子パーティションを作って、XP のインストール、統合サービスディスクのインストール、必要アプリケーションのインストール、Windows Update と進めます。
ここで大切なのは、ドメインに参加させない点です。sysprep は SID を削除するので、ドメインに参加していない状態で処理することが前提となっているためです。

sysprep で SID を削除

ベースとなる XP が出来たら、C:\sysprep を作成し、XP のインストールメディアの \SUPPORT\TOOL にある、DEPLOY.CAB から sysprep ツール群をコピーして、C:\sysprep にコピーします。

DEPLOY.CABの中にsysprepに必要なツールは格納されている

c:\sysprepにsysprepに必要なツールをコピー

 

sysprep 用の自動応答ファイルを作成

そのまま sysprep.exe を実行すると、通常のインストールと同様に様々入力をしなくてはなりませんが、setupmgr.exe で応答ファイルを作っておけば自動でセットアップできるようになります。

setupmgr.exeを起動

新しい応答ファイルを作成

Sysprepセットアップ

対象となるOSを選択

完全自動化

必要な項目を設定する

応答ファイルの出力

セットアップマネージャの終了はキャンセル

 

sysprep の実行

sysprep をする準備が出来たら、sysprep.exe を起動します。

sysprep.exe の起動

Mini-Setupを指定して再シール

 

ベースとなる VHD の仕上げ

sysprep 処理が終わると、自動的にシャットダウンされます。
これでベースの VHD は出来上がったので、ベース環境を作った子パーティションは不要なので削除します。子パーティションを削除しても VHD は削除されません。
子パーティションを削除したら、ベースとなる VHD が誤って更新されないように読み取り専用の属性をつけておきます。

ベース環境作成に使った子パーティションを削除

ベースとなる VHD に読み取り専用の属性をつける

 

差分ディスクで XP 環境を展開

ベースとなる VHD が出来たら、これから必要数分の差分 VHD を作成します。

ハードディスクの作成

差分を指定

作成する差分 VHD の指定

ベースとなる VHD の指定

 

差分ディスクを使った子パーティションの作成

これで差分 VHD の準備が出来ましたので、子パーティション作成時に取り込みます。

新しい子パーティション作成時に差分 VHD を指定

差分 VHD で作った子パーティション

新しく作成した子パーティションを起動すると、Mini-Setupが走って、新しい XP 環境が出来上がります。

 

 

必要ライセンス

既に w7 50台が稼働している環境に、Hyper-Vマシンを1台新規購入して、20の子パーティションに XP Professional をインストール場合、以下のライセンスが必要になります。

XP が新たにクライアントとして追加されるので、XP 用の CAL が必要になります。

XP が入手できないのであれば、w7 を必要分購入し、SA(ソフトウェア アシュアランス)付の VL(ボリュームライセンス)を付加すれば、SA の特典である ダウングレード権が使えるので、XP のクライアントライセンスが手に入ります。
ただし、クライアント OS の VL は、元となる OS ライセンスを持っていることが前提になっていますので、VL+SA の他に、元になる w7 を持っている必要があります。
ドメインに XP を参加させるのであれば、XP Professional にダウングレードする必要がありますので、元となる w7 は Enterprise/Professional/Ultimate のいずれかのエディションを持っている必要があります。

クライアント OS のダウングレード権を行使して OS をインストールには、インストールする OS のインストールメディアを持っている必要があります。

<Volume Licensing>
http://www.microsoft.com/japan/licensing/

余談ですが、Windows Server の VL はフルセットのライセンスが入手できるので、元となる Windows Server のライセンスは不要ですし、必要に応じてインストールメディアの提供が受けられます。

今回のケースでは、子パーティションとして XP のみを稼働させるので、Windows Serve 2008 R2 のエディションは Standard で構いません。
Hyper-V で複数の子パーティションを稼働させるには、Enterprise か Data Center が必要なように思われがちですが、Enterprise と Data Center には、追加のサーバライセンスを購入しなくても子パーティションに Windows Server を稼働させる権利がついてきているだけです。
今回は、子パーティションに XP インストールするので、この権利は使いません。更に節約するのであれば、無償の Hyper-V Server 2008 R2 を使っても良いでしょう。

<Hyper-V Server 2008>
http://www.microsoft.com/japan/servers/hyper-v-server/

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.