您的位置:首页 > 运维架构

运维基础——Win7自动化截图时的设置

2017-09-03 17:24 776 查看

问题

windows远程桌面打开时,可以正常进行截屏操作。但如果远程退出了或最小化,会发现这时截屏的结果的黑屏,或者程序会报异常。 这使得一些爬虫或自动化测试运行时可能会存在问题。

分析

在Windows XP, Windows Server 2003或者更早期的Windows操作系统中,所有的服务和应用程序都是运行在与第一个登录到控制台的用户得Session中。这个Session叫做Session 0。在Session 0 中一起运行服务和用户应用程序,由于服务是以高权限运行的,这样就存在一些安全风险。

在Windows7中,服务在一个叫做Session 0 的特殊Session中承载。由于应用程序运行在用户登录到系统后所创建的Session 0 之后的Session中,所以应用程序和服务也就隔离开来:第一个登录的用户在Session 1中,第二个在Session 2中,以此类推。事实上运行在不同的Session中,如果没有特别将其放入全局命名空间(并且设置了相应的访问控制配置),是不能互相传递窗体消息,共享UI元素或者共享kernel对象。

解决方法: 使用tscon

tscon.exe

作用是粘贴用户会话到终端对话。

文档地址: https://technet.microsoft.com/zh-cn/library/cc770988(v=ws.10).aspx

语法:

tscon {<SessionID>|<SessionName>} [/ 目标: <SessionName>] [/ 密码: <pw>|/ 密码: *] [/v]


如何查看当前session ID

在服务端运行:

query user




其中的ID列,即时session ID。

完整操作步骤

在client上执行:

mstsc /admin /v:47.92.136.27


服务器打开后,在服务器创建脚本:

for /f "skip=1 tokens=3 usebackq" %%s in (
`query user %username%`
) do (
%windir%\System32\tscon.exe %%s /dest:console
)


在服务器以管理员权限脚本

参考文章:

http://blog.csdn.net/c0ast/article/details/18285645

https://serverfault.com/questions/428975/how-to-use-tscon-on-windows7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: