首页 > 其他 > 详细

遍历窗口权限问题

时间:2019-09-01 11:48:24      阅读:56      评论:0      收藏:0      [点我收藏+]

一、问题点:获取桌面窗口数据,但是在系统权限且session0下,获取不到非系统权限且session1下的窗口。

  问题分析:在不同权限的session0和session1下遍历窗口,获取的窗口数据是否存在影响?

二、进程权限:

  为了系统的安全,Windows系统划分了多种权限来控制用户和程序访问数据的权限,可以有效避免来自病毒的攻击。尤其是在vista系统开始,Windows提供了UAC机制,即使当前登录的用户权限是管理员,运行某些管理员权限的程序或修改需要管理员权限的数据时,系统会弹出一个覆盖桌面的窗口,提示用户是否执行操作或取消操作。那么,为什么管理员账户也会被UAC拦截下来?这里,大概讲解下UAC的内部机制,当系统开启UAC时,如果当前是管理员账户登录,系统会保存一份管理员的token和一份普通权限的token,默认情况下使用普通权限token。如果当前是普通账户登录,系统就保存一份普通权限的token。当运行需要管理员权限或修改管理员权限的数据时,系统就会启动UAC机制,弹出覆盖桌面的弹窗。目前Windows系统提供的权限有:超管(高于系统权限)、系统权限、管理员权限,普通用户权限。不同进程在不同权限范围内各司其职。其中,系统权限及以上的进程(一般为服务进程),运行在session0层,一般是接受不到Windows消息,这就是为什么服务程序没有窗口。

  技术分享图片

 

 

             (设置UAC的入口(Vista系统))

 

三、问题验证:

  1、普通权限:

    技术分享图片

 

     及时其他窗口对应的进程权限是管理员,也可以正常扫描到。

 

  2、管理员权限:

  技术分享图片

 

     管理员权限下session1层下,扫描到正常的窗口:例如:everything。

  3、系统权限:

技术分享图片

 

     seesion0层是服务层,不会显示窗口,可以通过debugview查看。系统权限session1层下,扫描的窗口都是系统权限session1的窗口。

 

四、总结:

  对于一些涉及到seesion1层的Windows窗口的功能,比如扫描可见窗口、截图(不涉及驱动层)等不要使用系统权限且session(会话层)不要在服务层,否则可能导致失败。webrtc截屏功能,启动的进程可以是系统权限,但是一定是非session0层。如果有些情况下,进程必须要使用系统权限,但是某些线程功能涉及到管理员权限,这个是可以实现的,但是必须是线程降权,但是不能保证降权后的功能能够正常实现。

遍历窗口权限问题

原文:https://www.cnblogs.com/smartNeo/p/11441562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!