-
-
[讨论]windows服务中SetWindowsHook遇到的问题
-
发表于: 2012-10-18 13:54 3405
-
假设的场景是在一个服务进程A中枚举进程,如果发现IE的进程,则设置一个钩子进去
首先我不想把服务安装成交互式的,测试系统是XP,IE是在第一个登陆用户环境下打开。
在实际服务的代码编写时,如果枚举进程发现目标后,先切换服务进程的窗口站到WinSta0,然后通过GetThreadDesktop获取IE主线程的桌面,目的是让IE和服务进程处于同一个桌面环境下,但是GetThreadDesktop返回了5:拒绝访问,服务进程是运行在system账户下面,这个system的权限不是很大吗,怎么会拒绝访问呢,不是很明白。
网上一些例子是直接OpenDesktop("default"...),个人认为这种写法不一定适用于我现在的情况。
MSDN说安装钩子的进程必须和目标进程在同一个desktop里面,而目标线程有可能不在default这个桌面里面。
最后,对system这个账户的权限仍然不是很理解,很多资料显示这个账户是整个系统里权限最大的,比管理员还要大,但是以system账户运行的服务进程可以轻松被其他交互式用户在任务管理器里面结束掉,不借助特殊的杀进程工具。
首先我不想把服务安装成交互式的,测试系统是XP,IE是在第一个登陆用户环境下打开。
在实际服务的代码编写时,如果枚举进程发现目标后,先切换服务进程的窗口站到WinSta0,然后通过GetThreadDesktop获取IE主线程的桌面,目的是让IE和服务进程处于同一个桌面环境下,但是GetThreadDesktop返回了5:拒绝访问,服务进程是运行在system账户下面,这个system的权限不是很大吗,怎么会拒绝访问呢,不是很明白。
网上一些例子是直接OpenDesktop("default"...),个人认为这种写法不一定适用于我现在的情况。
MSDN说安装钩子的进程必须和目标进程在同一个desktop里面,而目标线程有可能不在default这个桌面里面。
最后,对system这个账户的权限仍然不是很理解,很多资料显示这个账户是整个系统里权限最大的,比管理员还要大,但是以system账户运行的服务进程可以轻松被其他交互式用户在任务管理器里面结束掉,不借助特殊的杀进程工具。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
看原图
赞赏
雪币:
留言: