遍历窗口权限问题

一、问题点:获取桌面窗口数据,但是在系统权限且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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值