アプリケーションは、RemoteApp として実行されていることを検知できますか?

アプリケーションは、RemoteApp として実行されていることを検知できますか?

背景情報

最近、RemoteApp を使用して自宅のすべてのコンピューターに展開するために、サーバーに Microsoft Office 2013 をインストールしました。インストール後、プログラムを実行しようとすると、ターミナル サービスがインストールされている PC で Office を実行するには、ボリューム ライセンス バージョンの Office を使用する必要があるというエラーが表示されました。その後、すべてのリモート デスクトップ サーバー ロールをアンインストールし、代わりに許可リストを無効にして手動で展開したところ、ローカルで実行しても、RemoteApp として展開しても問題なく動作しました。

許可リストとは何ですか?

通常の RemoteApp 展開では、RemoteApp として実行できるアプリケーションのリストがあり、これを構成する唯一の方法は、ターミナル サービス サーバー ロールを使用することです。ただし、Windows レジストリにアクセスしてリストを無効にすると、ターミナル サービス サーバー ロールをインストールしなくても、パスを知っているすべてのユーザーがサーバー上の任意のアプリケーションに RemoteApp としてアクセスできるようになります。

これを見て、あることが気になりました...

私の質問

アプリケーションは、このようにして (許可リストを無効にして) RemoteApp として実行されていることを検出し、実行されている場合は起動を拒否し、ローカル サーバーのデスクトップで実行されている場合にのみ起動できますか?

答え1

アプリケーションが RemoteApp として実行されていることをどのように検出できますか?

RemoteAppセッションはターミナルサーバー上で開始されますRDPINIT.EXE。アプリケーションはRDPINIT.EXEが親プロセス

詳細:

RDPINIT.EXE のインスタンスは、各ユーザーの RemoteApp セッションのターミナル サーバー上で実行されます。RDPINIT.EXE は、USERINIT.EXE の RemoteApp 固有の実装として USERINIT.EXE によってロードされます。RDPINIT.EXE はウォッチドッグとして機能し、RDPSHELL.EXE を起動してプロセスの起動とシャットダウンを監視します。RDPSHELL.EXE は、RemoteApp 機能を提供するために EXPLORER.EXE の代わりに使用されるシェルです。RDPINIT.EXE は、RDPSHELL.EXE のプロセス ライフサイクルを監視し、異常終了した場合は再起動します。RDPSHELL.EXE は、セッション内の各ユーザーのデスクトップに一連の Windows イベント フックをロードします。これらのイベント フックにより、RDPSHELL.EXE はデスクトップ上のすべてのウィンドウの状態を監視できます。...

(引用元:テクネット

関連情報