【问题标题】:How to set ACL for SetWindowsHookEx()?如何为 SetWindowsHookEx() 设置 ACL?
【发布时间】:2012-12-05 00:15:42
【问题描述】:

可以在 Windows XP 中对所有键盘/鼠标事件设置挂钩:

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

...但在 Windows 7 中,SetWindowsHookEx 返回 5(拒绝访问)。

如何设置功能需要的权限/ACL?即使我“以管理员身份”运行我的程序,我也会遇到同样的“拒绝访问”错误。

【问题讨论】:

    标签: winapi


    【解决方案1】:

    挂钩不是安全对象,因此您不能为它们设置 ACL。在 Win7 中出现错误的原因是因为在 Vista 中引入的 UAC 改变了一般如何使用日志挂钩的规则。

    日志挂钩只能由提升的进程设置,并且该进程必须使用设置 uiAccess=True 的 UAC 清单绕过 User Interface Privilege Isolation (UIPI)。请注意,设置uiAccess=True 有其他后果,因此请确保您了解它的实际作用(有关详细信息,请参阅Windows Integrity Mechanism Design)。仅仅以管理员身份运行应用程序是不够的。

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

    【讨论】:

      猜你喜欢
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多