2010/11/09

リモート デスクトップ接続の「プログラムの起動」の説明不足

リモート デスクトップ接続クライアント (mstsc.exe)の「プログラムの起動」(alternate shell) オプションは、Windows シェル (Explorer.exe) を起動せずに、特定のプログラムのみを RDP セッションで起動する機能と理解している人が多いと思います。Windows Server 2003 以前はその通りのオプションでした。Windows Server 2008 で TS RemoteApp (Windows Server 2008 R2 では単に RemoteApp) が導入されたことで、このオプションの扱いが分かり難くなっています。

(2010/12/03 以下の内容は別のサイトで再利用する予定なので、以前あったスクリーンショットを削除しました)

例えば、「接続時に次のプログラムを起動する」をチェックして、「C:\Windows\System32\Notepad.exe」を指定したとしましょう。リモート デスクトップ接続のウィンドウには、シェル(タスクバーやスタートメニューなど)の無いデスクトップに、メモ帳 (Notepad.exe) のウィンドウだけが表示さると、Windows Server 2003 以前の経験者であれば期待します。


しかし実際には、「アクセスが拒否されました。この初期プログラムを開始できません: C:\Windows\System32\Notepad.exe ヘルプで詳細を確認してください」と表示され、エラーのダイアログボックスを閉じると背景だけが残ります。あとは切断するしか、しようがありません。

RemoteApp の機能は、「プログラムの起動」オプションを拡張したものであり、既定では RemoteApp プログラムとして許可されたアプリケーションしか実行できないようになっています。メモ帳(Notepad.exe) に対するアクセスが拒否されたのは、RemoteApp プログラムとして許可されていないことが原因です。

「プログラムの起動」オプションを使用して、メモ帳 (Notepad.exe) を起動したければ、「RemoteApp マネージャー」を使用して、メモ帳 (Notepad.exe) を RemoteApp プログラムの一覧に追加します。

この方法以外に、「RemoteApp マネージャー」の「RD セッション ホスト サーバー」の設定で、「初期接続時に一覧にないプログラムとあるものの両方の起動を許可する」を有効にする方法もあります。後者の方法は、セキュリティ上推奨されませんが、RemoteApp プログラムの登録を必要としません。レジストリの「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList」にある「fDisableAllowList」を「1」に設定しても同じ効果があります。

このあたりの仕様変更については、http://support.microsoft.com/kb/946410/ja に記載されています。が、よくわからない説明になっています。

ところで、Windows XP Professional や Windows Vista Business 以上、Windows 7 Professional では、「プログラムの起動」オプションを設定しても、まったく無視されて、デスクトップ全体 (Windows シェル) が表示されます。この動作については、Windows XP に関してですが http://technet.microsoft.com/ja-jp/library/cc782233(WS.10).aspx に次のように記載されています。


Windows XP を実行しているリモート コンピュータのコンソール セッションに接続した場合、一部のクライアント オプション設定は適用されません。たとえば、クライアントがリモート コンピュータへの接続時に起動するプログラムを指定した場合、リモート コンピュータのコンソール セッションへ接続しても、そのプログラムは起動されません。その代わりに、既定のデスクトップが表示されます。コンソール セッション以外のセッションに接続すると、指定したプログラムが期待どおりに起動します。Windows XP Professional のリモート デスクトップで利用できるセッションはコンソール セッションのみなので、クライアントが別のプログラムを指定した場合でも、接続時には常に既定のデスクトップが表示されます。

まわりくどい説明ですが、指定したプログラムは起動しないということです。Windows Vista 以降については該当する説明が見当たりませんが、おそらく Windows XP の制約を引き継いでいるものと想像します。デスクトップ OS では、「プログラムの起動」オプションは利用できませんが、RemoteApp プログラムとして実行することは可能です。これについては、「KB961741 と KB961742 で、VDI + RemoteApp も可能になる(その1)~(その7)」の一連の投稿をご覧ください。

0 件のコメント: