2010/02/19

KB961741 と KB961742 で、VDI + RemoteApp も可能になる (その6) - XP への RemoteApp 接続成功で完結

KB961741 と KB961742 で、VDI + RemoteApp も可能になる (その5) - Inside Windows Virtual PC の続き、間があきましたが、ようやく完結編です。

Windows Virtual PC の仮想アプリケーションモードは、RemoteApp テクノロジを利用したものです。Windows 7 Enterprise および Ultimate のリモートデスクトップ接続は、Windows 7 にインストールされたアプリケーションへのRemoteApp 接続に標準で対応しています。Windows Vista Enterprise および Ultimate SP1 以降、および Windows XP Professional SP3 についても、以下の更新プログラムで RemoteApp に対応できます。

KB961741: RemoteApp(tm) を有効にするための Windows(r) Vista SP1 以降用の更新プログラム
KB961742: RemoteApp(tm) を有効にするための Windows(r) XP SP3 用の更新プログラム

Windows Virtual PC の Windows Vista および Windows XP 仮想マシンで仮想アプリケーションモードを利用するためには、これらの更新プログラムが必要です。別の言い方をすると、これらの更新プログラムにより、Windows Vista や Windows XP にインストールされたアプリケーションに、RemoteApp 接続(アプリケーションウィンドウ単位で接続)できるようになるということです。Windows 7 は標準で可能です。この機能を利用するためには、RDP ファイル(.rdp)を記述する必要があります。詳しくは、KB961741 と KB961742 で、VDI + RemoteApp も可能になる (その2) で説明しました。

しかし、ネットワーク経由で Windows XP 上のアプリケーションに RemoteApp 接続しようとすると、 「このコンピューターは RemoteApp をサポートしていません。サポートが必要な場合は、システム管理者に問い合わせてください。」 と表示され、瞬時に切断されてしまうという現象にずっと悩んできました。この問題への回答が Remote Desktop Services (Terminal Services) Team Blog: RemoteApp for Hyper-V のコメントで明らかになりました。

以下に、VDI (Windows Server 2008 R2 のリモートデスクトップサービスの新機能) の個人用デスクトップや仮想デスクトップでホストされている Windows XP 仮想マシンのアプリケーションに RemoteApp 接続するための RDP ファイルを示します。赤字の部分が 、KB961741 と KB961742 で、VDI + RemoteApp も可能になる (その2)  と異なる部分、つまり Windows XP 仮想マシンでのみ必要な設定になります。

個人用デスクトップ (Windows XP ゲスト)の RemoteApp プログラムに接続するための RDP ファイルの例
-----------------------------------------------------------------------------------
redirectclipboard:i:0
redirectposdevices:i:0
redirectprinters:i:0
redirectsmartcards:i:0
devicestoredirect:s:
drivestoredirect:s:
session bpp:i:32
allow font smoothing:i:1
promptcredentialonce:i:1
gatewayusagemethod:i:2
gatewayprofileusagemethod:i:0
gatewaycredentialssource:i:0
full address:s:RDSH (RDSH はリダイレクター モードの RD セッション ホスト)
alternate shell:s:
gatewayhostname:s:
workspace id:s:RDSH.contoso.com (RDSH の FQDN)
use redirection server name:i:1
loadbalanceinfo:s:tsv://vmresource.2.
use multimon:i:1
alternate full address:s:RDSH
disableremoteappcapscheck:i:1
alternate shell:s:||WINMAIL alternate shell:s:rdpinit.exe
remoteapplicationmode:i:1
remoteapplicationprogram:s:||WINMAIL (RemoteApp プログラムの指定)
remoteapplicationname:s:Windows Mail (RemoteApp プログラムの名称)
remoteapplicationcmdline:s:
-----------------------------------------------------------------------------------

仮想デスクトップ プール (Windows XP ゲスト) の RemoteApp プログラムに接続するための RDP ファイルの例(プール内の仮想マシンのすべてに同じアプリケーションが必要)
-----------------------------------------------------------------------------------
redirectclipboard:i:0
redirectposdevices:i:0
redirectprinters:i:0
redirectsmartcards:i:0
devicestoredirect:s:
drivestoredirect:s:
session bpp:i:32
allow font smoothing:i:1
promptcredentialonce:i:1
gatewayusagemethod:i:2
gatewayprofileusagemethod:i:0
gatewaycredentialssource:i:0
full address:s:RDSH (RDSH はリダイレクター モードの RD セッション ホスト)
alternate shell:s:
gatewayhostname:s:
workspace id:s:RDSH.contoso.com (RDSH の FQDN)
use redirection server name:i:1
loadbalanceinfo:s:tsv://vmresource.1.VistaPool (VistaPool は仮想デスクトップ プールのプール ID)
use multimon:i:1
alternate full address:s:RDSH
disableremoteappcapscheck:i:1
alternate shell:s:||AcroRd32 alternate shell:s:rdpinit.exe
remoteapplicationmode:i:1
remoteapplicationprogram:s:||AcroRd32 (RemoteApp プログラムの指定)
remoteapplicationname:s:Adobe Reader 9 (RemoteApp プログラムの名称)
remoteapplicationcmdline:s:
-----------------------------------------------------------------------------------

前回 (その5) の投稿で、ターミナル サービス接続クライアント (mstsc.exe) 側が初期段階で接続をあきらめているような印象を書きました。追加のオプション disableremoteappcapscheck:i:1 は、RemoteApp 機能のチェックを無効にするもののようです。想像は正しかったようです。rdpinit.exe は、explorer.exe に変わる RemoteApp 専用シェル rdpshell.exe を読み出すためのプログラムです。

次のスクリーンショットは、Windows 7 クライアントから、VDI の個人用仮想デスクトップとして Hyper-V 上で動作する Windows XP 仮想マシンの Word 2003 に RemoteApp 接続したものです。


実は、この Windows 7 の環境は、VDI の仮想デスクトッププールに接続したものだったりします。


Windows Virtual PC や VDI がからんでくると、話がややこしくなりますが、要は Windows 7 Enterprise, Windows 7 Ultimate, Windows Vista Enterprise SP1 以降 (+KB961741), Windows Vista Ultimate SP1 以降 (+KB961741), Windows XP Professional SP3 (+KB961742) のリモートデスクトップ接続が、デスクトップ全体への接続に加えて、アプリケーションへの RemoteApp 接続をサポートしたということです。Windows Virtual PC や VDI とからめて何が嬉しいかというと、どちらも仮想マシンの起動と休止を自動で行ってくれること、そしてデスクトップ全体に接続するよりもメモリ消費量が少ないこと(通常の explorer.exe シェルの代わりに rdpshell.exe が使用されるため無駄なプロセスが抑制される)です。

昨年から続いてきたこの投稿のシリーズは、とりあえずこれで完結します。機会があれば、どこかのオフラインまたはオンライン記事でまとめてみたいと思います。

過去の投稿はこちらから。
 
KB961741 と KB961742 で、VDI + RemoteApp も可能になる (その1)
KB961741 と KB961742 で、VDI + RemoteApp も可能になる (その2)
KB961741 と KB961742 で、VDI + RemoteApp も可能になる (その3)
KB961741 と KB961742 で、VDI + RemoteApp も可能になる (その4)
KB961741 と KB961742 で、VDI + RemoteApp も可能になる (その5)