1

有没有办法设置进程安全权限或其他方式来禁用 Windows 加载全局窗口挂钩 dll?我不想禁用 SetWindowsHookEx,我只想禁用钩子 dll 在我的进程中加载​​。

4

1 回答 1

0

您可以通过安装自己的钩子然后不CallNextHookEx()从您的钩子调用来禁用所有钩子。要正确执行此操作,您需要确保您的钩子将是第一个将被调用的钩子。

调用钩子的顺序似乎没有记录,但通过反复试验很容易检查。只需安装来自不同进程的几个钩子,然后看看哪个首先被调用。最可能的情况是

  • 第一个安装的钩子是第一个被调用的。这是一个简单的选择。只要确保尽快安装你的钩子。
  • 第一个调用的钩子是唯一最后安装的。这个比较棘手。您必须始终确保您的钩子是最后安装的钩子。一种骇人听闻的方法是创建一个线程,每秒左右删除钩子并再次添加它。

这个解决方案远非完美,考虑到订单没有记录在案,可以想象它在未来的某个时候可能会发生变化。钩子调用顺序也可能是完全随机的,在这种情况下,这个解决方案对你没有多大好处。

于 2011-10-10T23:32:09.573 回答