Windows フックを使用してアプリケーションにメッセージを送信すると、システム上のすべてのアプリケーションから Windows イベントが通知されます。
メッセージ パラメータのマーシャリングを実行するには、共有メモリを使用します。外部プロセスはDuplicateHandleを呼び出しますが、アプリケーション インスタンスとハンドルを共有するために、PROCESS_DUP_HANDLE 特権要件でOpenProcessを呼び出す必要があります。
実際には、外部プロセスに対して SeDebugPrivilege を有効にする必要がある場合でも、すべてのアプリケーションがこのアーキテクチャを使用してメッセージを送信できます。SeDebugPrivilegeトークンを持たない「エクスプローラー」プロセスを除いて、実際には機能します...
AdjustTokenPrivilegesのドキュメントには次のように記載されています。
AdjustTokenPrivileges 関数は、アクセス トークンに新しい特権を追加できません。トークンの既存の特権を有効または無効にすることしかできません。トークンの権限を確認するには、GetTokenInformation 関数を呼び出します。
それで、問題は... SeDebugPrivilegeトークンを「エクスプローラー」プロセスに追加する方法、または代わりに「エクスプローラー」プロセスが呼び出すことを許可する方法OpenProcess(PROCESS_DUP_HANDLE, FALSE, pId)
ですか?