
背景情報
最近、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 はデスクトップ上のすべてのウィンドウの状態を監視できます。...
(引用元:テクネット)