• 遍历窗口权限问题


    一、问题引入

      获取桌面窗口数据,但是在系统权限且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层。如果有些情况下,进程必须要使用系统权限,但是某些线程功能涉及到管理员权限,这个是可以实现的,但是必须是线程降权,但是不能保证降权后的功能能够正常实现。

  • 相关阅读:
    十一周
    第五次作业
    第十周
    测试作业
    2016.06.24-2016.06.30这周工作时间和内容
    2016.06.10-2016.06.16这周工作时间和内容
    2016.06.03-2016.06.09这周工作时间和内容
    2016.05.26-2016.06.02这周工作时间和内容
    2016.05.20-2016.05.26这周工作时间和内容
    分答
  • 原文地址:https://www.cnblogs.com/smartNeo/p/11441562.html
Copyright © 2020-2023  润新知