【GamingAnywhere源码分析之知识补充五】Windows模拟用户session完成存储权限控制

        GA的存储挂载其实在上周三外围工作基本已经完成了,但是在后续这几天开发工作中遇到了一个很大的问题,是关于GA的捕捉模式,很可能有违我们修改GA的初衷。这里具体碰到哪些问题就先不说了,还是先介绍完GA存储实现的方式,等到下一篇文章中我们的研究方向可能会有改变,不过GA的源码分析总会坚持下去的。

1. Windows session机制

2. 以模拟域帐号的身份启动应用进程

     1> 模拟用户身份

     2> 多字节到宽字节的转换

3. Powershell执行mount和dismount操作

4. GA服务器端添加存储模块

一、Windows session机制

        为什么会提到windows的session机制呢?我们来分析一下,GamingAnywhere的服务端是运行在win8系统上的,该系统是以域帐号管理员的身份登录的,一旦服务端启动我们就不会手动去切换用户,基于视频流捕捉的机制,客户端连接过来后它所看到的窗口是在服务端实际运行的一个进程,而你所看到的以及你所拥有的权限都取决于运行在服务器上的该进程的权限。还记得我们分析GamingAnywhere的初衷吗?就是想利用它的这种方式来启动一个应用程序,比如:Unity,用户在启动后进行编辑势必要将自己编辑的内容保存下来,那么保存在哪?就是我们需要解决的问题,这必须面临着不同用户的权限控制。还记得以RDP登录的方式吧?它就是利用windows的session机制,每一个用户利用RDP登录后,实际上在windows上就会新建出一个session,windows就是利用它来完成不同用户的权限控制的(当然还要依赖其它方式的辅助)。那我们既要避开使用RDP这种方式,又要实现权限控制,如何实现呢?答案就是:以模拟用户的身份启动进程,那么改进程拥有的身份及权限就是那个模拟用户的。下面就先来了解一下Windows的session机制吧(先来一幅图):

                                                                                       

         现在我们知道,每一个用户登录windows系统后(利用域控可以允许多用户同时登录),都会产生一个标识他身份的session,它可以启动它自己的应用程序(进程),打开任意的窗口等。每个进程都唯一属于它的启动用户,同时也拥有一个session。也就是说,session是由代表单个用户登录会话的所有进程和系统对象组成的。其中的对象包括所有的窗口,桌面和windows stations。windows station基本上可以被描述为包含特定桌面和进程的安全边界,一个session可以包含多个windows station,而每个windows station又可拥有多个桌面。

        在多个windows station中,只有被称为winsta0的windows station才被允许与用户交互。在winsta0下共被载入三个桌面:winlogon(登录界面),default(缺省,即用户桌面)和ScreenSaver(屏幕保护桌面)。它们三个都有各自的显存,这就是为什么当你锁定工作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值