钩子&UAC 一个键盘钩子,开始还好,不过奇怪地发现在VISUAL STUDIO下按了什么都没反映。还以为是VS做了一定的处理,后来一想,可能是不同用户权限问题,果然,凡是以管理员启动的窗口都没截获到消息。不知道有没什么处理方法?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Windows钩子程序以管理员启动,那有不以管理员启动的程序呢? 默认的程序都是以当前登陆用户的身份启动吧,vista以后右击可以选择以管理员身份运行。 你用钩子的时候如果不是全局底层钩子是一定要有dll注入到目标进程的。在VISTA之后的操作系统,权限控制的很严格。你这个情况可能是因为你的程序的权限低于目标程序的权限,导致钩子无法正确的注入到目标进程空间导致的。解决方法就是在你的工程中,右键属性,连接器,清单文件,然后把UAC级别改为requireAdministrator 或者嵌入manifest,赋予本应用程序requireAdministrator权限 ,重新编译之后,直接运行你的程序就拥有requireAdministrator权限了。 这样就可以正确安装钩子。 钩子失效,很有可能是因为你的IE7 。IE7会自动让钩子失效,原因我忘记了,反正是出于安全考虑。还有一些高安全的程序,会让钩子失效。 这个问题我以前也遇到过。问题不在于你的钩子。而是你注册消息的问题。在vista以上版本注册消息ChangeWindowMessageFilter(RegMes,MSGFLT_ADD); 通过这种方式才行。不过注意一点。在xp下用这个会运行时错误。不过可以把这个放到一个dll中。动态链接这个dll(静态会出错),先判断操作系统版本。vista以上的调这个库 很具体了啊。只要ChangeWindowMessageFilter(你的消息名,MSGFLT_ADD);这样就可以提升你消息的权限,然后按照我说的步骤这样弄。如果你不用考虑xp和win7都要跑的话每必要加个dll 你说的:凡是以管理员启动的窗口都没截获到 消息。 你是注册了一个消息吗?如果是注册了一个消息的话,要用ChangeWindowMessageFilter添加进可信队列提高权限在ie上才能跑。这个和我遇到的问题一样。我也是在dll中定义了一个钩子。发消息和ap交互,一开始在win7的ie上不行调试发现是消息发不过去。用这样的方式解决了。你可以尝试下 不是消息,是通过共享内存和AP通信的。在一些管理员启动的窗口按了特定的键后钩子并没有反应。QQ09也有这个情况,在管理员启动的VS中,按热键启动QQ,也是没反应 // 分配虚拟内存. LPVOID lpBaseAddress; lpBaseAddress = VirtualAllocEx(hProcess, 0, BUFFER_SIZE, MEM_COMMIT, PAGE_READWRITE); 那你有没在目标进程中分配内存? 你确定dll加载了?人家自己hook一下LdrLoadMoudle你钩个屁呀钩,都不知道自己的问题出在哪里了就开始解决问题了 我的意思是,比如我对QQ设置的热键SHIFT+Z启动QQ界面。如果在管理员模式打开的VS中按热键会无效。其他管理员启动的程序都一样而我自己用钩子设置的热键在QQ对话框中按的话还是有效的。项目经理说年后再想办法,谢谢大家的回复! 菜单上贴位图怎样与Toolbar关联? 100分求助MDI窗口滚动条问题 北京的风好大呀~ MP3播放器程序设计 求工具软件 怎样把长度为8的字符串转成十六进制 急,数据库连接错误? 关于调用全局函数的问题? vc++与c++buder,那个好?请大家给点意见! 版主:为什么我不能给分??(贴子:第一次正式学汇编,一些方向上的问题。) 内存映射文件的问题。。 打印预览式样问题
IE7会自动让钩子失效,原因我忘记了,反正是出于安全考虑。
还有一些高安全的程序,会让钩子失效。
消息。
你是注册了一个消息吗?如果是注册了一个消息的话,要用ChangeWindowMessageFilter添加进可信队列提高权限在ie上才能跑。这个和我遇到的问题一样。我也是在dll中定义了一个钩子。发消息和ap交互,一开始在win7的ie上不行调试发现是消息发不过去。用这样的方式解决了。你可以尝试下
在一些管理员启动的窗口按了特定的键后钩子并没有反应。
QQ09也有这个情况,在管理员启动的VS中,按热键启动QQ,也是没反应
LPVOID lpBaseAddress;
lpBaseAddress = VirtualAllocEx(hProcess, 0, BUFFER_SIZE,
MEM_COMMIT, PAGE_READWRITE);
那你有没在目标进程中分配内存?
如果在管理员模式打开的VS中按热键会无效。
其他管理员启动的程序都一样而我自己用钩子设置的热键在QQ对话框中按的话还是有效的。项目经理说年后再想办法,谢谢大家的回复!