筆者としては、RDPファイルを使用する方法が「プログラム」タブの正しい代替策だと思います。しかし、接続先がWindows Server 2008以降の場合、「アクセスが拒否されました。この初期プログラムを開始できません」あるいは「指定されたファイルが見つかりません。この初期プログラムを開始できません」というエラーメッセージが表示されてしまい、セッションを切断するしか方法がないという問題に遭遇するでしょう(画面4)。
これは、Windows 10の問題ではありません。Windows 8.1以前のリモートデスクトップ接続クライアント(Mstsc.exe)の「プログラム」タブでプログラムを指定して接続しても、同じようにエラーになります。そもそも、「プログラム」タブでの「接続時に次のプログラムを起動する」の指定と、RDPファイルでの指定に違いはありません。
この問題は、Windows Server 2008の「ターミナルサービス」(現在のリモートデスクトップサービス)から利用可能になった「TS RemoteApp」(現在のRemoteApp)に関係するものです。Windows 8.1以前とWindows Server 2008以降の組み合わせで、「プログラム」タブの「接続時に次のプログラムを起動する」を利用してきた方には既知のことであり、回避策を講じているはずです。
Windows Server 2003 R2までの「接続時に次のプログラムを起動する」の機能を拡張したものが、Windows Server 2008以降のRemoteAppです。そして、RemoteAppの既定では「許可されたアプリケーション」しか実行できないようになっています。RemoteAppで許可されていないアプリケーションは、「接続時に次のプログラムを起動する」で実行することができないのです。
RemoteAppでのアプリケーション公開は、RemoteApp用の標準の管理ツールで設定できますが、レジストリを編集して許可することも可能です。アプリケーションごとに許可を設定するのが適切ですが、それをレジストリで扱うのは難しいでしょう。
次のレジストリキーにある「fDisableAllowList」値のデータを既定の「0」から「1」に変更することで、全てのアプリケーションを許可することができます(画面5)。サーバ側の再起動は必要ありません。
Windows 8.1以前の「接続時に次のプログラムを起動する」オプション、またはWindows 10のRDPファイルでプログラムを指定すれば、セッション接続時にそのプログラムが起動し、プログラムを閉じればセッションが切断するようになります(画面6)。
今回は「プログラム」タブの「接続時に次のプログラムを起動する」の代替策について、いろいろと説明してきましたが、やはり「接続時に次のプログラムを起動する」の後継となるRemoteAppを利用するべきだと思います。それが本来の使い方です。
なお、Active Directoryドメイン環境の場合は、他にもドメインユーザーのプロパティの「環境」タブにある「ログオン時に次のプログラムを起動する」オプションを使う方法がありますが、話が複雑になるので今回は省略します。マイクロソフト公式の回避策を含め、いろいろとテストした上で、自分の環境に最適なものを選択してください。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。
Copyright © ITmedia, Inc. All Rights Reserved.