怎么在service中跨越session挂hook

如何在service中跨越session挂hook
服务运行在LocalSystem帐号下,现在想要在服务中用SetWindowsHookEx来为所有线程挂接GetMessage钩子。但是如果在xp下用户使用了switch   user功能,那么每个登录的账户都会拥有独立的会话和独立的winsta0。如果服务通过attatch“winsta0\default”桌面的办法来取得交互的权利继而挂接钩子,好像只能获得0号会话的winsta0,这时便不能给其他会话(包含了其他的登录账户)的线程挂钩子了。请问如何才能挂到所有账户下的线程呢?

------解决方案--------------------
挂到所有账户下的线程呢? 不可能吧?
------解决方案--------------------
用这个函数SetWindowsHookEx不太行吧。
------解决方案--------------------
要session启动的时候启动你的程序才可以
------解决方案--------------------
SetWindowsHookEx 只能用于同样的Desktop,也就是同样的WindowsStation。不能用于其他的比如Terminal Service的WindowsStation.
------解决方案--------------------
可以使用这样的方法:服务还是照常启动,不过启动后就会自动在run子键下注册一个键值,指向另一个程序(此程序可以加载DLL达到HOOK作用,也可以不用而实现全局HOOK,我已做成功了),因为服务先于用户登录运行了,因此用户总在在登录后又自动运行了RUN下的程序,而被新的进程HOOK了.如果需要,您可以另外保这个键值及文件.只要不断的检测注册表及文件即可.不要使用文件通知功能,如果你快速的多次对文件进行删除,它就不通知了.如果不用保护,就不用管了.只使用单一的服务很难实现.我近期写的一个的保护工具就使用四个模块相互保护的机制,实际了安全模式及DOS下都无从破坏的效果.
------解决方案--------------------
不太理解费这么大劲保护有什么意义,先不说保护抢占别人的资源合适不合适。从技术上来讲,对于不懂电脑的人来讲,随便两进程保护都够了。对于懂的人来讲,你弄50个模块也只是浪费一下别人时间。上周笔记本中了招,最后一看,三个RunDLL,两个BHO,加上Winlogon Notification两个监视Registry修改,一共六个进程,Debugger全Hook住,最后删除完了一强制蓝屏,全没了。除了浪费时间一点儿技术含量没有。就是个鼻涕弄一身的感觉。

当时我在床上,否则最简单的,拿WinPE启动,或者拿Windows启动到Recovery Console,5分钟,你弄出神仙来也给你删光了。
------解决方案--------------------
用钩子保护程序??
又是一个在强奸用户的。
为什么???
为什么用户安装了程序却没有结束他的权利???
为什么要强奸用户???
难道你肯定用户全是PLMM???如果是恐龙呢???
给用户一点自由吧,程序出现是让用户更方便,更快捷的操作,而不是强奸用户。
------解决方案--------------------
每个男人都有强奸的冲动 哈哈
------解决方案--------------------
嗯,楼上说的有道理,强扭的瓜最甜。

说正经的,我开始以为楼主要弄病毒,听口气好像是商业软件。能说说你是做什么类的软件吗?是不是有更好的解决办法? 公共场所比如机房网吧可以通过直接控制用户权限限制他的行动,个人机用户应该有绝对自由,好像都不需要挂钩子。SetWindowHookEx当场设计只是为了培训类软件做的。

系统钩子有两个很明显的缺点,一是系统性能显著降低,另外是系统不稳定,把钩子写对了很不容易。比如很多写钩子的都很少考虑它不是是系统唯一的钩子。我有个高中同学开原来开网吧,公安局强制他每台机器上装他们的监控软件,交钱不装都不行。自然是钩子满天飞,系统性能降低一半儿至少,另外打着打着游戏就死机,我同学后来都快崩溃了。

用户也都不傻,一旦知道你的程序有手脚,肯定会躲着你,长期来讲对你的产品肯定是不利的。比如我以前装软件带了个3271的什么搜索帮助乱搞,我以后凡是3271的东西绝对碰都不会碰,网站都不去。搞来搞去最后还是把自己害了。

这个版都快成钩子版了,放眼望去全是Hook,有些朋友一有问题,首先想到的就是钩子,有正常的途径也不管了,也是****一特色了,呵呵。