繁体   English   中英

低级鼠标挂钩不会在管理进程中触发mousedown / mouseup事件

[英]Low level mouse hook doesn't fire mousedown/mouseup event on admin process

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

重现问题的步骤:

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

结果:请注意,作为管理员运行的应用程序实例(从#2开始)现在无法获得鼠标上/下/点击事件,但它仍然可以获取其他鼠标事件和所有键盘事件

有没有人遇到过这个问题?

OP:

...它证实,当前台窗口正在作为管理员的mouseup / MouseDown事件中,没有得到触发。

OP:

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

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

MSDN:

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

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

我记得在Vista发布之前,有一个可爱的Word文档,主要是关于为Windows Vista准备应用程序,但遗憾的是我无法找到它。

但如果我的应用程序以管理员身份运行,则无法获取mousedown / mouseup事件

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

这是Windows的已知问题

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

告诉我更多

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM