1

2 つのアプリケーションを実行し、それぞれが RegisterWindowMessage() を使用して同じメッセージを登録します: アプリケーション A は通常のユーザーとして、アプリケーション B は管理者として、マシン上の同じユーザーのセッションで、これらのアプリケーションはこのメッセージを互いに送信します。A と B が同じユーザーとして実行された場合、すべて問題なく、PostMessage() メッセージングを使用して通信できました。アプリケーション B が管理者として実行されると、メッセージは表示されなくなります。私たちはそれについて何ができますか?

この状況では、他のメカニズム (メッセージ以外) を使用する必要がありますか?

4

1 に答える 1

11

Windows Vista 以降では、User Interface Privilege Isolation (UIPI)により、整合性の低いプロセスが整合性の高いプロセスにウィンドウ メッセージを送信するのを防ぎます。以前のバージョンの Windows では、悪意のあるコードがウィンドウ メッセージを悪用して管理プロセスを攻撃する可能性がありました。デフォルトでは、UIPIWM_USERは を介し​​て登録されたメッセージを含む、 を超える値を持つすべてのメッセージをブロックしますRegisterWindowMessage()。したがって、A がそのようなメッセージを B に送信できるようにするために、B は最初に、整合性の低いプロセスから受信したいブロックされたメッセージごとにChangeWindowMessageFilter()またはを呼び出す必要があります。ChangeWindowMessageFilterEx()

于 2013-03-16T04:20:18.023 に答える