我们在 EC2 Windows 服务器上运行了一个应用程序,该应用程序在与服务器的远程桌面会话关闭后立即停止工作。该应用程序在查找不同的窗口、菜单和对话框时对实际屏幕进行 OCR,但如果没有活动会话,Windows 会跳过渲染这些内容以节省系统资源。
此应用程序的作用与 selenium 类似,因为它控制鼠标和键盘并启动不同的应用程序。启动应用程序时,它会扫描屏幕以查找菜单和对话框中的特定文本,以确定某些窗口是否打开。
当远程桌面连接断开时,服务器会通过不执行应用程序所需的所有 UI 渲染来节省资源。因此它无法读取屏幕并停止正常工作。现在我只是全天候从我的笔记本电脑保持远程桌面连接打开,但每次我关闭笔记本电脑屏幕时,应用程序都会停止工作。
我尝试的另一件事是登录到备用 Windows 服务器并从该服务器打开远程桌面会话进入问题服务器。我让该会话保持打开状态,但是当我断开与备用服务器的连接时,UI 渲染问题不知何故通过备用服务器级联到问题服务器。
我想知道是否有任何方法可以强制 Windows Server 继续进行所有 UI 渲染,就好像用户仍然处于连接状态一样,即使没有活动会话。
也许是另一个聪明的解决方案?
答案1
如果没有提供渲染 GUI 的实际理由,就无法强制 Windows 渲染 GUI。
我不确定 AWS 控制台的具体工作原理,但通常在这种情况下,最简单的解决方案是禁用屏幕保护程序和自动锁定功能,打开控制台会话然后保持其打开。
如果 AWS 不提供此选项,则唯一的选择是打开 RDP 会话并保持打开状态(当然,要确保服务器未配置为在一段时间后锁定屏幕或断开会话)。显然,如果您从笔记本电脑执行此操作,则每次笔记本电脑断开与互联网的连接(例如睡眠或休眠)时,该 RDP 会话都会断开连接。因此,请从台式机、服务器或其他始终在线的设备运行 RDP 会话。
这些是你唯一的选择,除非替换任何需要使用 GUI 才能正常运行的糟糕应用程序。