首页 > 解决方案 > 以非提升方式运行时,为提升的应用程序调用 LowLevelKeyboardProc

问题描述

我的应用程序以当前用户身份运行,没有管理员权限。SetWindowsHookEx然后它安装一个键盘钩子来使用with WH_KEYBOARD_LL(不是 DLL 注入)来捕获关键事件。它可以很好地击键到一个非管理员窗口,但是对于以管理员身份运行的窗口它没有捕获任何内容。我希望它对两者都有效。

从安全的角度来看,我认为这是有道理的,但是这让我很恼火(在 WinAPI 文档中找不到任何表明这一点的东西)。有什么方法可以缓解这种情况而无需以管理员身份运行我的应用程序?另外,主要的替代方案RawInputAPI还会有这个问题吗?

标签: winapikeyboard-hooksetwindowshookex

解决方案


Hans Passant 的建议是我能找到的最佳答案。也就是说,uiAccess="true"在 app.manifest 中指定一旦满足要求(签名的应用程序、受保护的目录)就可以工作。

不幸的是,还有另一个问题是如何从另一个使用uiAccess. 这是一个单独的问题:

是否可以从另一个具有 uiAccess=true 的进程启动具有 uiAccess=true 的进程


推荐阅读