本文讨论了在虚拟机上部署机器人运行流程时可能遇到的问题,包括最小化窗口、断开远程连接和虚拟机分辨率对流程运行的影响。文章解释了问题原因,并提供了多种解决方案,如修改注册表防止最小化后切换到无图形界面,使用bat脚本防止断开连接时锁屏,以及管理虚拟机分辨率以保证流程稳定运行。
为了节省成本,客户可能会要求在虚拟机上部署机器人来运行流程,相对物理机,虚机的图形化界面会比较特殊,在运行有界面交互的流程时,如不进行特殊处理可能会出现问题。
常见问题:
1.最小化远程虚机的窗口后,流程运行失败
2.断开远程连接后,流程运行失败
3.虚拟机分辨率影响流程正常运行
问题原因:
通过远程连接windows虚机时,被连接的Windows会启动一个Session。此时你对虚拟机界面的所有操作(鼠标,键盘)将会以TCP包传输过去,被连接的Windows接收到这些包之后在当前的活动会话上面执行。实际上利用的还是你本机的鼠标键盘,分辨率没有主动修改时也是适应了你的本机。
当你最小化连接窗口时,会让当前远程的Session会话切换到无图形界面的模式,这自然就无法继续接收鼠标、键盘的指令了。
而当你断开连接时,Session会话也会断开,系统切换到登录的锁屏界面,而不是本来的界面,也就导致了流程里所有基于你所拾取的UI界面的操作失败了。
解决方案:
1.最小化:
通过设置注册表的值可以阻止切换到无图形界面。(如何修改注册表https://jingyan.baidu.com/article/e4d08ffdd1c76b0fd2f60d00.html)
32位系统
找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client,创建一个 DWORD 类型的值,名字叫做 RemoteDesktop_SuppressWhenMinimized,然后设置值为 2。
64位系统
找到 HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Terminal Server Client,然后和 32 位一样创建一个DWORD 类型的值,名字叫做 RemoteDesktop_SuppressWhenMinimized,并设置值为 2。
local的改动会应用于整个机器,如果只想应用于某个用户,把 local替换成用户名即可。
2.断开连接:
首先,(修改虚拟机电源选项为任何情况永不息屏)
(1)简单粗暴的方法:找一台机器一直连接
(2)bat阻止远程断开时锁屏
bat内容:(文本文档写入,修改后缀即可)
@%windir%\System32\tscon.exe 0 /dest:console
@%windir%\System32\tscon.exe 1 /dest:console
@%windir%\System32\tscon.exe 2 /dest:console
断开虚机连接时不要直接点击关闭,管理员模式运行这个bat断开。
(3)跳板机
原理同(1),也是保持连接,不过用另一台虚机来实现。
本机A,虚机B,C,A远程连接跳板机B,然后通过B连接C,断开连接时A断开B,即可解决。
3.虚机分辨率
一般来说,不用到图片拾取,或者区域拾取的话,分辨率基本不会影响到流程的运行。也有一些特殊情况,比如某些应用在低分辨率小窗口情况下,某个菜单选项会缩没或者折叠,这时候就会有影响。
(1)直接在开发时,就以断开连接时虚机本身的分辨率进行流程的开发
(2)使用RPA机器人桌面管家(一般用于高密度机器人,如果项目中实在无法规避分辨率问题,可以考虑使用),可以管理分辨率保证不变。
推荐阅读