Windows 7 UltimateでRemote Appを利用する

先日、Windows Server 2008 R2でRemote Appを利用した踏み台サーバの構築について記述したが、実はRemote AppはWindows 7でも設定出来るようだ。 設定できるのはUltimate、Enterpriseエディションだけのようだが、どうやって設定、利用するのかやってみることにした。Windows 7に関しては、事前にリモートデスクトップを有効にしている。

なお、この設定はWindows Server 2008 R2でも有効なので、先日の手順で設定した際にライセンスサーバが必要と言われるのが煩わしい場合は、こちらの手順で設定するのも良いのではないだろうか。

1.レジストリの編集

Windows 7 でのRemote Appの有効化は、レジストリの編集で行える。 以下のレジストリを作成して、値を1にするだけだ。

HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Terminal Server¥TSAppAllowList¥fDisabledAllowList

「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server」キーがない場合は、Remote Appに対応していないエディションだと思うので、一度確認してもらいたい(Ultimateであれば、インストール時点ですでに存在している。Professionalは非対応なので注意。)。 レジストリエディタを開くのが面倒であれば、以下のコマンドを実行してもらいたい。

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1

次に、アクセスを有効にするアプリケーションを登録する。 以下のコマンドを実行し、レジストリに追加を行う。

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Application\アプリケーション名(任意の名称)" /v CommandLineSetting /t REG_DWORD /d 0
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Application\アプリケーション名(任意の名称)" /v Name /t REG_SZ /d "RemoteAppで利用したいアプリケーションの名称"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\アプリケーション名(任意の名称)" /v Path /t REG_SZ /d "RemoteAppで利用したいアプリケーションのPath"

実際に実行した例として、リモートデスクトップをRemote Appで利用するアプリケーションとした場合、以下のようなコマンドを実行する。

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList¥mstsc" /v CommandLineSetting /t REG_DWORD /d 0
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList¥mstsc" /v Name /t REG_SZ /d "mstsc"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList¥mstsc" /v Path /t REG_SZ /d "C:¥Windows¥System32¥mstsc.exe"

2.rdpファイルの作成・編集

レジストリにアプリケーションを登録したら、次は.rdpファイルを作成する。 RemoteApp用、クライアント用どちらのWindowsでもいいので、一度mstsc.exeを実行しリモートデスクトップ接続を起動する。

起動後、オプションをクリックして接続先コンピュータ名、ユーザ名を入力。その時点で一度名前をつけて保存する。

保存した.rdpファイルをテキストエディタで開き、以下の内容で編集する。 (編集で該当するとこだけ抜粋)

●Before

remoteapplicationmode:i:0
alternate shell:s:

●After

remoteapplicationmode:i:1
remoteapplicationname:s:プログラム名
remoteapplicationprogram:s:プログラムのPATH

3.rdpファイルの実行

後は、作成した.rdpファイルを実行するだけだ。

.rdpファイル実行後、リモート先のmstsc.exeがローカル上で実行される。 後は、通常どおりアプリケーションを利用するだけだ。

さて、これで無事使えるようになった。 …とはいえ、やはりそこはWindows 7での有効化。問題はある。特に問題なのが、セッション数の問題だ。通常、この方法だと許可されるセッション数がデバイス数に依存するため、ユーザ数ベースでの許可が出来ない。このため、リモート先のWindows 7に複数のデバイスから同時にアクセスするのは、ちょっとむずかしそうだ。『Concurrent RDP Patcher』でも使えばいいんだろうが、デフォルトから用意されている方法でなんとかならないものかなぁ…