自己写的一个工业设备工况智能诊断分析软件,需要把分析结果即时发送到消息平台,在手机上提示责任人进行及时处置。一开始使用钉钉的消息钩子,但后来因为各种原因需要更新到企业自己的开发的消息平台,而这个消息平台并不提供消息钩子,只好另辟蹊径,开发了一个RPA机器人,用来实现消息的自动发送,(RPA机器人的开发可以在加息中交流,如果需要,我下次专门再写一个专题)。
   代码出来后,通过远程桌面把程序部署到虚拟服务器中,测试一切正常,程序发现抽油机故障后,能够立刻把消息发送出去,然后就放心的关闭远程桌面,交付测试人员继续测试,但一天下来一个报警也没有反馈,百思不得其解,后来感觉是因为关闭了远程桌面后,因为服务器上不再有显示任务,估计是把界面相关的服务也停了(我的RPA里用到了系统的剪贴板、鼠标按钮点击,键盘点击,屏幕光标定位等屏幕相关内容),经过查找windows远程桌面运行机制【通过mstsc启动远程桌面连接时,被连接的Windows会启动一个会话(Session)。此时咱们对远程桌面窗口里面的所有操作(鼠标,键盘)都会被转换成TCP包传送到服务器,服务器端的Windows接收到这些包之后,解析出咱们远程发出的命令,并在当前的活动会话上面执行。但是当咱们断开连接后(点X关闭),即使这时RPA程序还在发送消息,但因为服务器跟咱们的远程会话已经娈为断开状态,所有基于GUI的消息都将“失效”】。
   原因大致确定后,解决方案自然也就简单了,写一批处理文件,在每次需要关闭远程桌面时,把会话重定向,这就用到了 tscon这个强大的工具(具体功能可以去网上查找,不要用到不该用的地方噢,哈......)。
   把打开熟悉的记事本,输入下面内容,并在保存时重命名为 .bat 文件格式,这样退出远程桌面时执行它就OK了:
   @%windir%\System32\tscon.exe 0 /dest:console
   若您的服务器上打开了多人登录,为了避免出现问题,最好再加两行(我没有测试这种方式,还请测试过的朋友指正):
   @%windir%\System32\tscon.exe 1 /dest:console
   @%windir%\System32\tscon.exe 2 /dest:console
   好了,问题解决。
   希望对您有所帮助,也是我分享的初衷,您的支持将转化为继续分享的动力,谢谢。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐