【苍穹RPA】虚拟机部署机器人,流程无法运行问题原创
金蝶云社区-Man_what_can_isay
Man_what_can_isay
2人赞赏了该文章 1681次浏览 未经作者许可,禁止转载编辑于2021年10月14日 14:17:00

为了节省成本,客户可能会要求在虚拟机上部署机器人来运行流程,相对物理机,虚机的图形化界面会比较特殊,在运行有界面交互的流程时,如不进行特殊处理可能会出现问题。


常见问题:

1.最小化远程虚机的窗口后,流程运行失败

2.断开远程连接后,流程运行失败

3.虚拟机分辨率影响流程正常运行


问题原因:

通过远程连接windows虚机时,被连接的Windows会启动一个Session。此时你对虚拟机界面的所有操作(鼠标,键盘)将会以TCP包传输过去,被连接的Windows接收到这些包之后在当前的活动会话上面执行。实际上利用的还是你本机的鼠标键盘,分辨率没有主动修改时也是适应了你的本机。

当你最小化连接窗口时,会让当前远程的Session会话切换到无图形界面的模式,这自然就无法继续接收鼠标、键盘的指令了。

而当你断开连接时,Session会话也会断开,系统切换到登录的锁屏界面,而不是本来的界面,也就导致了流程里所有基于你所拾取的UI界面的操作失败了。

image.png


解决方案:

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断开。

image.png

(3)跳板机

原理同(1),也是保持连接,不过用另一台虚机来实现。

本机A,虚机B,C,A远程连接跳板机B,然后通过B连接C,断开连接时A断开B,即可解决。


3.虚机分辨率

 一般来说,不用到图片拾取,或者区域拾取的话,分辨率基本不会影响到流程的运行。也有一些特殊情况,比如某些应用在低分辨率小窗口情况下,某个菜单选项会缩没或者折叠,这时候就会有影响。

(1)直接在开发时,就以断开连接时虚机本身的分辨率进行流程的开发

(2)使用RPA机器人桌面管家(一般用于高密度机器人,如果项目中实在无法规避分辨率问题,可以考虑使用),可以管理分辨率保证不变。

赞 2