上下文 我想做的就是使用Java在Windows节点(在云上生成)启动GUI应用程序(例如:mspaint),当我使用RDP连接时,我希望GUI应用程序已经存在。
问题: 通过RDP连接到远程Windows节点后,我没有看到GUI应用程序。 我可以看到我的Java程序实际上已经启动了GUI应用程序,我可以在任务列表中看到它。它在“服务”会话下开始。当我在连接到RDP后运行相同的Java程序时,它在会话中启动了相同的应用程序,名称为“RDP-Tcp#0”
如果我使用传统的RDP客户端,我可以简单地选择我想要连接的会话,但是我无法控制,因为我正在使用名为Guacamole的HTML5 RDP客户端。
Java程序使用Runtime.getRuntime()。exec()API来运行启动GUI应用程序的powershell脚本。
有没有办法运行我的脚本以便它运行并在不同的会话中显示GUI?这在Linux中是微不足道的,我们只需要导出DISPLAY env变量。
请帮忙
答案 0 :(得分:1)
您无法在尚不存在的RDP会话中启动程序。要获得您想要的工作,您需要您的代码通过RDP实际登录,启动程序,然后断开会话而不注销。但是,由于空闲会话占用系统资源,因此终端服务器管理员倾向于为空闲会话设置超时,之后用户将自动注销。