web-dev-qa-db-ja.com

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

背景情報

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

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

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

これは私に何かについて興味をそそられました...

私の質問

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

6
gparyani

アプリケーションは、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はデスクトップ上のすべてのウィンドウの状態を監視できます。 .。

Technet から引用)

2
marsh-wiggle