可以在Windows XP中的所有键盘/鼠标事件上设置挂钩:
SetWindowsHookEx(WH_JOURNALRECORD, (HOOKPROC)JournalLogProc, GetModuleHandle(NULL), 0);..。但在Windows7中,SetWindowsHookEx返回5(拒绝访问)。
如何设置函数所需的权限/ACL?即使我以“管理员”身份运行我的程序,我也得到了相同的“拒绝访问”错误。
发布于 2012-12-05 09:02:35
挂钩不是安全对象,因此不能为它们设置ACL。在Win7中出现错误的原因是,在Vista中引入的UAC改变了一般情况下如何使用日志挂钩的规则。
日志挂钩只能由提升的进程设置,而且该进程还必须使用设置uiAccess=True的UAC清单绕过User Interface Privilege Isolation (UIPI)。请注意,设置uiAccess=True还有其他后果,因此请确保您了解它的实际作用(有关详细信息,请参阅Windows Integrity Mechanism Design )。仅仅以管理员身份运行应用程序是不够的。
唯一的其他解决方法是手动更改计算机的安全策略,以完全禁用UAC,或减少UAC设置中的某些安全限制。
https://stackoverflow.com/questions/13714289
复制相似问题