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 完整性机制设计)。仅仅以管理员身份运行应用程序是不够的。

唯一的其他解决方法是手动更改计算机的安全策略以完全禁用 UAC,或减少 UAC 设置中的某些安全限制。

于 2012-12-05T01:02:34.840 回答