1

Windows XP では、すべてのキーボード/マウス イベントにフックを設定することができました。

 SetWindowsHookEx(WH_JOURNALRECORD, (HOOKPROC)JournalLogProc, GetModuleHandle(NULL), 0);

...しかし、Windows 7 では、SetWindowsHookEx は 5 を返します (アクセスが拒否されました)。

関数に必要なアクセス許可/ACL を設定する方法は? プログラムを「管理者として」実行しても、同じ「アクセス拒否」エラーが発生しました。

4

1 に答える 1

2

フックは保護可能なオブジェクトではないため、ACL を設定することはできません。Win7 でエラーが発生する理由は、Vista で導入された UAC によって、ジャーナル フックの一般的な使用方法のルールが変更されるためです。

ジャーナル フックは、昇格されたプロセスによってのみ設定できます。また、プロセスは、設定する UAC マニフェストを使用して、ユーザー インターフェイス特権の分離 (UIPI)uiAccess=Trueをバイパスする必要があります。設定uiAccess=Trueには他の影響があることに注意してください。そのため、設定が実際に何をするのかを必ず理解しておいてください (詳細については、Windows Integrity Mechanism Designを参照してください)。アプリを管理者として実行するだけでは不十分です。

他の唯一の回避策は、マシンのセキュリティ ポリシーを手動で変更して、UAC を完全に無効にするか、UAC 設定の特定のセキュリティ制限を緩和することです。

于 2012-12-05T01:02:34.840 に答える