Windows Vista及更高版本上的系统范围键盘挂钩

Windows Vista及更高版本上的系统范围键盘挂钩,windows,delphi,keyboard-hook,Windows,Delphi,Keyboard Hook,我创建了一个系统范围的键盘挂钩DLL,它在Windows XP中已经成功运行了多年 然而,在某些更高版本的Windows(Vista Home Premium和Windows 7等)中,钩子要么根本不起作用,要么只是在安装它的应用程序中本地工作 我在互联网上的几个地方看到过这样的建议:在调用SetWindowsHookEx时,将WH-KEYBOARD更改为WH-KEYBOARD-LL,但在我尝试时,这似乎没有帮助。除了将钩子类型更改为WH-KEYBORD-LL之外,还有什么需要更改的吗 (注意:

我创建了一个系统范围的键盘挂钩DLL,它在Windows XP中已经成功运行了多年

然而,在某些更高版本的Windows(Vista Home Premium和Windows 7等)中,钩子要么根本不起作用,要么只是在安装它的应用程序中本地工作

我在互联网上的几个地方看到过这样的建议:在调用SetWindowsHookEx时,将WH-KEYBOARD更改为WH-KEYBOARD-LL,但在我尝试时,这似乎没有帮助。除了将钩子类型更改为WH-KEYBORD-LL之外,还有什么需要更改的吗


(注意:我必须将WH-KEYBORD-LL定义为13,因为它在Delphi中没有定义。我假设这是准确的。)

确保承载钩子的进程与您要钩子的应用程序处于相同的特权级别。键盘和其他挂钩具有很高的安全风险,因此Vista和更高版本被更改为只允许在公共特定安全上下文中的进程中使用系统范围的挂钩。换句话说,如果您使用用户权限启动hook主机进程,它将只钩住处于相同权限级别的进程。如果您仔细想想,这是有意义的,因为您不希望用户级进程能够将代码注入管理级进程。这在很多层面上都很糟糕。

根据,是的,
WH\u-KEYBOARD\u-LL
是13。