本記事はマイクロソフト社員によって公開されております。
こんにちは、Windows サポート チームの玉井です。
AVD および RDS の環境にて RemoteApp を構成いただくことができますが、そもそも RemoteApp とは何なのか、どのような留意点があるのかなどをご紹介したいと思います。
RemoteApp とは
セッションホスト上で動作するアプリケーションのウィンドウだけを接続元クライアント上に表示させるRemote Desktop 機能の一つです。
接続元クライアントから直接ウィンドウを操作できるため、あたかもローカルのアプリケーションのように見えますが、実際には、セッションホストで動作しています。
RemoteApp の内部動作の概要につきましては、以下の弊社ブログのアーカイブに記載がございますため、こちらをご参照ください。
RemoteApp の動作について | Microsoft Docs
セッションホストで動作しているため、ウィンドウのテーマ・視覚効果・ウィンドウの反応速度・ファイルの保存先など、ローカルのアプリケーションとは動作が異なることがあります。
RemoteApp アプリケーションの動作の互換性について (microsoft.com)
もし、なるべくローカルのアプリケーションと同等の動作を目指す場合は、アプリケーション側でRemoteApp に特化した処理を実装しなければならない場合があります。
RemoteApp の構成について
RemoteApp は、Remote Desktop 機能がベースになっているため、AVDでもRDSでも動作しますが、それぞれで公開方法が異なることを留意ください。
RemoteApp の内部動作の概要につきましては、以下の弊社ブログのアーカイブに記載がございますため、こちらをご参照ください。
AVD での RemoteApp の構成方法について
Azure portal を使用してアプリ グループを管理する - Azure | Microsoft Docs
RDS でのRemoteApp の構成方法について
リモート デスクトップ サービス コレクションを作成する | Microsoft Docs
公開するRemoteApp の留意点
エクスプローラーの公開は非推奨
エクスプローラーは、ファイラーの機能以外にもシェルとして機能があるため、起動するとシェルとしても動作します。しかし、RemoteApp では、専用のシェルが動作しているため、エクスプローラーを公開するとシェルの競合が発生してしまいます。
この競合により、予期せぬ動作になる場合があるため、エクスプローラーの公開は推奨していません。ClickOnce アプリケーションの公開は未サポート
ClickOnce アプリケーションは、ターミナルサーバー環境では、利用することができません。RemoteApp も、Remote Desktop 機能がベースになっているため、同様に未サポートになります。
ClickOnceターミナル サーバーで使用できない - .NET Framework | Microsoft Docs
- エクスプローラーにインテグレーションされているアプリケーションの公開は未サポート
エクスプローラーにインテグレーションされているアプリケーションは、タスクバーにあるアイコンから起動します。このようなアプリケーションは、RemoteApp からは公開することができないため、未サポートになります。
また、このようなアプリケーションの例としては、OneDrive の同期アプリなどが該当します。
Use the sync app on virtual desktops - OneDrive | Microsoft Docs
- /TSAWARE のフラグがついていないアプリケーションは未サポート
ターミナルサーバーに対応するアプリケーションの開発には、最低でも、/TSAWARE フラグをつけて、ビルドする必要があります。
もし、このフラグがついていない場合、ターミナルサーバーでは、未サポートになります。RemoteApp も、ターミナルサーバーの機能がベースになっているため、同様に未サポートになります。
また、このようなアプリケーションの例としては、VB6のアプリケーションなどが該当します。
/TSAWARE (Create Terminal Server aware application) | Microsoft Docs
- UWP の公開は未サポート
RemoteApp は、公開するアプリケーションの実行ファイル (EXE) を指定しますが、UWP は、実行ファイル (EXE) をダブルクリックをしても起動できません。
UWPのプロセスのライフサイクル(起動シーケンス)は、複雑なため、RemoteApp の専用のシェルでは適切に管理することができないため、未サポートになります。
Windows 10 UWP アプリのライフサイクル - UWP applications | Microsoft Docs
- RemoteApp 起動中の画面のサイズや解像度の変更は非推奨
RemoteApp は、起動時のクライアントの情報をもとにウィンドウのサイズなどを設定します。
もし、RemoteApp の起動中に、クライアントの画面の解像度やサイズを変更したとしても、セッションホストの画面の解像度やサイズは変わりません。
このためクライアントの画面の解像度やサイズを変更するとクライアントとセッションホストに設定の不一致が発生して、RemoteAppが、適切に表示されないことがあります。
マルチモニタ環境の留意点
マルチモニタ環境では、モニタごとに、画面のサイズや解像度が異なることがあります。
このような環境で RemoteApp をモニタ間で移動すると、RemoteAppは、起動中に画面のサイズや解像度が変わったのと同じ状態になります。
起動中に画面のサイズや解像度の変更は、非推奨であるため、RemoteAppが、適切に表示されないことがあります。
RemoteApp は、プライマリモニタ内で利用するか、同じ画面サイズおよび解像度のモニタを利用すること推奨します。
disableseamlesslanguagebar:i:1 使用時のIMEツールバーの残存期間
RemoteAppで公開しているアプリケーションを終了しても、セッションホスト側との通信のセッションは、即時終了しません。
通信のセッションは、最低でも、30秒間保持されます。通信のセッションが保持されている場合、disableseamlesslanguagebar:i:1でセッションホストからリダイレクトしているIMEツールバーがクライアントに表示したままになります。
プロファイルソリューションとの共存の留意点
Fslogix、Roaming Profile, UPD (User Profile Disk) といったプロファイルソリューションは、利便性は高いですが、以下のブログでも紹介している通り、条件によっては、パフォーマンスでボトルネックになる場合があります。
黒画面となった場合の改善方法 | Microsoft Japan Windows Technology Support Blog (jpwinsup.github.io)
対して、RemoteAppは、ローカルのアプリケーションのように起動すること期待されることが多く見受けられ、プロファイルソリューションで発生するパフォーマンスのボトルネックになり、起動遅延などが発生しやすくなる場合があります。
このような問題を避けるために、RemoteApp のマシンプールとリモートデスクトップのマシンプールの分割し、RemoteApp のマシンプールには、プロファイルソリューションを利用することを検討ください。
その他のリソース
RemoteApp に関する公開情報やトラブルシューティングに関しまして、以下の通り公開情報がございますため、それぞれご参照ください。
Application doesn’t start in TS RemoteApp session - Windows Server | Microsoft Docs
RemoteApp sessions are disconnected - Windows Server | Microsoft Docs)
以上となります。