[干货]部署在虚拟机里面的RPA,在关闭远程桌面之后正常运行

极客破浪者
• 阅读 513

小编对于这篇文章一直犹豫要不要发,内容太干了,太技术了,不知道是不是能贴合所有人口味。居实施过大型企业RPA项目的小伙伴们,肯定会遇到这样的问题,当机器人部署在虚拟机上,然后关闭mstsc之后,虚拟机windwows会失去GUI交互能力 ,导致键盘,鼠标之类操作通通失效。
[干货]部署在虚拟机里面的RPA,在关闭远程桌面之后正常运行

啥? 有些玩RPA的还没经历这个步骤 ?我举个最简单的RPA例子:

让RPA机器人打开Baidu ,鼠标点一下输入栏,输入”51RPA”,点“百度一下”按钮
[干货]部署在虚拟机里面的RPA,在关闭远程桌面之后正常运行

相信我们在正常人来做这件事情就和玩一样简单,但当你让这个把RPA部署在虚拟机,并且关闭远程桌面连接后,你发现RPA机器人只干了一件事,那就是打开了Baidu ,后面的几步都失效了。

【必备知识】

如果还想了解的更深入,请参见以下链接:

https://blogs.technet.microso... (Mark Russinovich 大拿的文章)

https://docs.microsoft.com/zh... (微软官方文章)

首先需要知道3个在Windows 操作系统中的经常用的对象:

Session、Windows Station 、 Desktop。

▲ Session 用户会话

每个登录操作系统的用户都会被分配一个唯一的登录会话,用于标识该用户
操作系统保留0号会话给一些系统服务及驱动使用,第1个登录系统的用户使用的 Session ID 为1,该用户执行的所有应用程序都在 Session 1 下执行。
Win7的任务管理器是可以设置查看会话 ID的,Win10单独多了用户TAB
[干货]部署在虚拟机里面的RPA,在关闭远程桌面之后正常运行

Windows Station

Station 被认为是桌面和进程的安全边界
每个 Session 都会包含多个 Station,而每个 Station 又包含1个或多个 Desktop
多个 Station 中,只有名字叫 Winsta0 的 Station 才是交互式的 Station,也就是说只有它才能有 UI 并接受用户输入
每个 Session 都有一个叫 Winsta0 的用户交互Station
▲ Desktop 桌面

WinSta0 包含至少三个Desktop:登录(WinLogon)、屏保(ScreenSaver)、默认(Default)

同一时间只会有一个Desktop处于激活状态
用户准备登陆,WinLogon Desktop处于激活状态
用户登陆后 Default Desktop处于激活状态
屏保的时候,ScreenSaver处于激活状态
激活状态的Desktop才能接收用户输入,钩子才能获取其中的某个窗口消息。
[干货]部署在虚拟机里面的RPA,在关闭远程桌面之后正常运行

▲ 原因

有了以上知识的铺垫,现在这个问题就很容易解释了。 当关闭远程桌面后,机器人所在的那台Windows会锁屏并切换到用户登陆桌面。用户登陆桌面自然无法完成那些人机交互。

【那么如何解决问题呢?】

▲解决方法

跳板机,相信有些人尝试过这个方法,让跳板机保持 mstsc长开。 这个方法可以解决问题。但就是管理复杂,远程连接也不能断,每次重启都要开好多好多远程桌面,也要多浪费一台虚拟机和不必要的网络带宽。(这个方法我就不解释了,如果需要,欢迎进群或者公众号私聊)
关闭远程桌面但不关闭Default Desktop方案
用Python写一个这样的脚本
把文件命名为CloseRDP.py 并存至 C:WindowsSystem32。以管理员方式运行CMD , 然后键入CloseRDP.py。网上还有以下方案,Win10亲测不灵。
[干货]部署在虚拟机里面的RPA,在关闭远程桌面之后正常运行

@%windir%System32tscon.exe 0 /dest:console

@%windir%System32tscon.exe 1 /dest:console

@%windir%System32t
scon.exe 2 /dest:console

点赞
收藏
评论区
推荐文章
芝士年糕 芝士年糕
2年前
Xshell如何连接虚拟机
前言:最近在了解nginx相关知识,所以创建Linux虚拟机(Centos7系统)进行学习,为了方便交互准备使用Xshell7来连接虚拟机操作。具体操作步骤:1.检查Linux虚拟机的网络连接模式,选择NAT模式。(注意:虚拟机关闭状态下才可修改)2.在VMware WorkstationPro里,点击菜单栏上的【编辑】–【虚拟网络编辑器】,打开下方的虚
小尉迟 小尉迟
2年前
Parallels Desktop 18.2.0提示“由于临界误差,不能启动虚拟机”怎么办
ParallelsDesktop最近更新到了18.2.0版本,但是许多小伙伴更新之后遇到了“由于临界误差,不能启动虚拟机”这样的问题,接下来小编就为大家带来解决PD虚拟机提示临界误差的解决方法。出现这个问题很有可能是Prldispservice卡住导致的。
Stella981 Stella981
3年前
CentOS7 使用ifconfig命令 ENS33没有IP地址的解决办法
    最近在研究和学习Linux操作系统,我并没有安装独立的Linux操作系统,我选择在虚拟机上安装Linux操作系统。我选择的虚拟机的版本是VMwareWorkstationPro14,然后在虚拟机上安装了一个没有用户操作界面的、也就是最小化操作系统,具体的版本是CentOS7Linux系统。当然这个系统可以正常使用,使用ifconfig命令也可以
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
VM ware提示:“无法关机 虚拟机繁忙”
在使用VMware过程中,可能会遇到以下这种情况:虚拟机无法关闭,并且在结束掉VMware进程后再次打开也不会恢复。!在这里插入图片描述(https://imgblog.csdnimg.cn/2020091217412425.png?xossprocessimage/watermark,type_ZmFuZ3poZW5na
燕青 燕青
1年前
pd虚拟机 19 一键激活 支持M1「无需关闭sip」
是一款功能强大的虚拟机软件,它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。ParallelsDesktop提供了直观易用的界面,使用户可以轻松创建、配置和管理虚拟机。该软件具有快速启动和关闭虚拟机的能力,让用户能够迅速切换不同操
晴雯 晴雯
2年前
Parallels Desktop 18.2.0提示“由于临界误差,不能启动虚拟机”解决办法
ParallelsDesktop最近更新到了18.2.0版本,但是许多小伙伴更新之后遇到了“由于临界误差,不能启动虚拟机”这样的问题,接下来小编就为大家带来解决PD虚拟机提示临界误差的解决方法。出现这个问题很有可能是Prldispservice卡住导致的。
流浪剑客 流浪剑客
1年前
支持M1、Parallels Desktop 19 for Mac虚拟机 19.0.0一键激活版
是一款功能强大的虚拟机软件,它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。ParallelsDesktop提供了直观易用的界面,使用户可以轻松创建、配置和管理虚拟机。该软件具有快速启动和关闭虚拟机的能力,让用户能够迅速切换不同操
绣鸾 绣鸾
1年前
Parallels Desktop for Mac虚拟机 19.1.0一键激活
是一款功能强大的虚拟机软件,它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。ParallelsDesktop提供了直观易用的界面,使用户可以轻松创建、配置和管理虚拟机。该软件具有快速启动和关闭虚拟机的能力,让用户能够迅速切换不同操
流浪剑客 流浪剑客
1年前
Parallels Desktop 19 for Mac虚拟机 19.1.0一键激活版
是一款功能强大的虚拟机软件,它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。ParallelsDesktop提供了直观易用的界面,使用户可以轻松创建、配置和管理虚拟机。该软件具有快速启动和关闭虚拟机的能力,让用户能够迅速切换不同操