本記事はマイクロソフト社員によって公開されております。
こんにちは、Windows サポート チームの玉井です。
AVD および RDS の環境にて RemoteApp を構成いただくことができますが、そもそも RemoteApp とは何なのか、どのような留意点があるのかについてご紹介したいと思います。
RemoteApp とは
セッションホスト上で動作するアプリケーションのウィンドウだけを接続元クライアント上に表示させるRemote Desktop 機能の一つです。
接続元クライアントから直接ウィンドウを操作できるため、あたかもローカルのアプリケーションのように見えますが、実際には、セッションホストで動作しています。
RemoteApp の内部動作の概要につきましては、以下の弊社ブログのアーカイブに記載がございますため、こちらをご参照ください。
RemoteApp の動作について | Microsoft Docs
RemoteApp と ローカル上のアプリケーション の差異について
RemoteApp はセッションホスト上で動作しているため、ウィンドウのテーマ・視覚効果・ウィンドウの反応速度・ファイルの保存先など、ローカルのアプリケーションとは動作が異なることがあります。
また、RemoteApp が動作するセッションにおいては、エクスプローラーがシェルではありません。
RemoteApp 専用のシェルが動作しています。エクスプローラーとは一定の互換性がありますが、全く同一ではありません。
このため、アプリケーションは、エクスプローラー上で動作させた場合と全く同一な動作になるとは限りません。
アプリケーション開発者は、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 の公開はサポート
UWP アプリの公開をRemoteApp として公開することはサポートされています。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 にて接続するプロセスは、ウィンドウが表示されることを前提としているため、バックグラウンドで動作するウィンドウを持たないプロセスや、Visible や、Hide プロパティにて、ウィンドウが非表示となっているプロセスとして実装されているアプリケーションの公開は、弊社では推奨しておりません。
仮に、上述のような、ウィンドウを持たない、または、非表示のアプリケーションを公開した場合には、プロセスが起動される可能性はございますが、セッションは維持されずに切断されることなどが考えられます。
上記を踏まえ、RemoteApp 接続でのアプリケーションの公開につきましては、ウィンドウが表示されるアプリケーションを対象としてください。(※ ウィンドウを持たない、または、非表示のアプリケーションを公開した場合の挙動については、弊社では想定してないため、トラブルが発生した際に、サポートさせていただくことができません。)
その他のリソース
RemoteApp に関する公開情報やトラブルシューティングに関しまして、以下の通り公開情報がございますため、それぞれご参照ください。
Application doesn’t start in TS RemoteApp session - Windows Server | Microsoft Docs
RemoteApp sessions are disconnected - Windows Server | Microsoft Docs)
以上となります。
更新履歴 - Update History
- 2022/10/12 : 本 Blog の公開
- 2024/01/25 : 加筆修正