低级鼠标挂钩不会在管理进程上触发鼠标按下/鼠标向上事件

本文关键字:鼠标 事件 管理 进程 | 更新日期: 2023-09-27 18:32:56

我现在正在编辑这个项目,因为我认为我已经查明了这个问题,这似乎是 Win8.1 和 Win10 的操作系统错误。问题摘要仍然与之前相同"低级鼠标挂钩不会在管理进程上触发鼠标按下/鼠标向上事件">......对于管理员应用,如果非管理员启动自己的低级别挂钩。

重现问题的步骤:

  1. 在此处下载演示应用程序
  2. 以管理员身份运行应用
  3. 确保监视鼠标向上/向下/单击事件
  4. 确认在步骤 #2 上启动的应用能够监视管理进程(包括其自己的窗口(上的鼠标向上/向下/单击事件
  5. 以非管理员身份运行应用的另一个实例
  6. 确保监视鼠标向上/向下/单击事件

结果:请注意,以管理员身份运行的应用实例(从 #2 启动(现在无法获取鼠标向上/向下/单击事件,但仍可以获取其他鼠标事件和所有键盘事件

有人遇到过这个问题吗?

低级鼠标挂钩不会在管理进程上触发鼠标按下/鼠标向上事件

OP:

。它确认当前台窗口以管理员身份运行时,不会触发鼠标向上/鼠标按下事件。

操作:

如果我的应用程序以管理员身份运行,则无法获取所有鼠标/键盘事件,

从 Vista 开始,应用无法向提升的应用发布消息或在提升的应用上安装挂钩。 这是通过用户界面权限隔离 (UIPI( 和完整性(见下文(实现的。

MSDN:

UIPI 不会干扰或更改相同权限(或完整性(级别的应用程序之间的窗口消息传递行为。UIPI 通过阻止以下行为来防止低特权进程访问高特权进程低权限进程不能

  • 对以更高权限运行的进程执行窗口句柄验证。
  • 使用发送消息或发布消息到以更高权限运行的应用程序窗口。这些 API 返回成功,但以静默方式删除窗口消息。
  • 使用线程挂钩附加到以更高权限运行的进程。
  • 使用日志挂钩监视以更高权限运行的进程
  • 对以更高权限运行的进程执行动态链接库 (DLL( 注入。告诉我更多...

我记得在Vista问世之前,有一个可爱的Word文档大部头,都是关于为Windows Vista准备你的应用程序,但遗憾的是我找不到它。

但是如果我的应用程序以管理员身份运行,那么它无法获得鼠标按下/鼠标向上事件

也许您的鼠标钩有问题?没有看到你的代码就无法分辨。

这是Windows的已知问题吗

根据我的理解,不适用于Windows Vista+。

告诉我更多

  • MSDN,"Windows Integrity Mechanism Design">,https://msdn.microsoft.com/en-us/library/bb625963.aspx