低级鼠标挂钩不会在管理进程上触发鼠标按下/鼠标向上事件
本文关键字:鼠标 事件 管理 进程 | 更新日期: 2023-09-27 18:32:56
我现在正在编辑这个项目,因为我认为我已经查明了这个问题,这似乎是 Win8.1 和 Win10 的操作系统错误。问题摘要仍然与之前相同"低级鼠标挂钩不会在管理进程上触发鼠标按下/鼠标向上事件">......对于管理员应用,如果非管理员启动自己的低级别挂钩。
重现问题的步骤:
- 在此处下载演示应用程序
- 以管理员身份运行应用
- 确保监视鼠标向上/向下/单击事件
- 确认在步骤 #2 上启动的应用能够监视管理进程(包括其自己的窗口(上的鼠标向上/向下/单击事件
- 以非管理员身份运行应用的另一个实例
- 确保监视鼠标向上/向下/单击事件
结果:请注意,以管理员身份运行的应用实例(从 #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