首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >低级鼠标钩子不会在管理进程上触发鼠标下/鼠标事件

低级鼠标钩子不会在管理进程上触发鼠标下/鼠标事件
EN

Stack Overflow用户
提问于 2016-02-03 08:16:54
回答 1查看 1.2K关注 0票数 1

我现在正在编辑这篇文章,因为我认为我已经找到了这个问题,这似乎是Win8.1和Win10的操作系统缺陷。问题摘要仍然和以前一样“低级鼠标钩子不会在管理过程中触发鼠标下/鼠标事件”.对于管理应用程序,如果一个非管理员开始自己的低级钩子。

复制问题的步骤:

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

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

有人遇到过这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-02-03 08:26:00

执行部分:

...and它确认当前台窗口以管理的形式运行时,不会触发mouseup/mousedown事件。

执行部分:

如果我的应用程序不是运行作为管理,那么我无法获得所有鼠标/键盘事件,

从Vista开始,应用程序不可能向高架应用程序发送消息或安装钩子。这是通过用户界面特权隔离(UIPI)和完整性(见下文)实现的。

MSDN:

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

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

我记得就在Vista发布之前,有一个很好的Word文档,里面都是关于为Windows准备你的应用程序的,但遗憾的是,我找不到它。

但是,如果我的应用程序作为admin运行,那么它就不能获得mousedown/mouseup事件。

也许你的鼠标钩子有问题?如果不看到你的代码就说不出来。

这是Windows中已知的问题吗?

据我所知,不是针对Windows Vista+。

多告诉我一些

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35171743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档