Java 从Windows中的其他会话在RDP会话中启动GUI应用程序

Java 从Windows中的其他会话在RDP会话中启动GUI应用程序,java,windows,session,powershell,rdp,Java,Windows,Session,Powershell,Rdp,上下文: 我想做的就是,使用Java在Windows节点(在云上生成)上启动一个GUI应用程序(例如:mspaint),当我使用RDP连接时,我希望GUI应用程序已经存在 问题: 通过RDP连接到远程Windows节点后,我看不到已经存在的GUI应用程序。 我可以看到我的Java程序实际上已经启动了GUI应用程序,我可以在任务列表中看到这一点。它是在“服务”会话下启动的。当我在连接到RDP后运行相同的Java程序时,它在会话中启动了名为“RDP Tcp#0”的相同应用程序 如果我使用的是传统的R

上下文: 我想做的就是,使用Java在Windows节点(在云上生成)上启动一个GUI应用程序(例如:mspaint),当我使用RDP连接时,我希望GUI应用程序已经存在

问题: 通过RDP连接到远程Windows节点后,我看不到已经存在的GUI应用程序。 我可以看到我的Java程序实际上已经启动了GUI应用程序,我可以在任务列表中看到这一点。它是在“服务”会话下启动的。当我在连接到RDP后运行相同的Java程序时,它在会话中启动了名为“RDP Tcp#0”的相同应用程序

如果我使用的是传统的RDP客户端,我可以简单地选择要连接到的会话,但在这里我无法控制,因为我使用的是HTML5 RDP客户端,称为鳄梨酱

Java程序使用Runtime.getRuntime().exec()API运行启动GUI应用程序的powershell脚本

是否有一种方法可以运行我的脚本,以便它在不同的会话上运行并显示GUI?这在Linux中很简单,我们只需要导出DISPLAY env变量


请提供帮助

您无法在尚未存在的RDP会话中启动程序。要获得您想要的工作,您需要您的代码通过RDP实际登录,启动程序,然后在不注销的情况下断开会话。但是,由于空闲会话占用了系统资源,终端服务器管理员倾向于为空闲会话设置超时,之后用户将自动注销。

您无法在尚未存在的RDP会话中启动程序。要获得您想要的工作,您需要您的代码通过RDP实际登录,启动程序,然后在不注销的情况下断开会话。但是,由于空闲会话占用了系统资源,终端服务器管理员倾向于为空闲会话设置一个超时,在此之后用户将自动注销。

您运行什么来远程执行java代码?从文章中可以看出,java进程似乎不是从远程启动的,而是从主机上的某个地方启动的。我说得对吗?如果Windows服务正在实际启动Java应用程序,并且主机操作系统是Windows 7或更高版本,则无法使UI可见。不过,如果我的思路正确,还有其他方法可以解释…@Poorkenny是的,Java程序驻留在主机上,并在启动时被调用。操作系统是带有SP1的Windows 2008服务器R2。请帮助我们了解可能的方法,例如,您运行什么来远程执行java代码?从文章中可以看出,java进程似乎不是从远程启动的,而是从主机上的某个地方启动的。我说得对吗?如果Windows服务正在实际启动Java应用程序,并且主机操作系统是Windows 7或更高版本,则无法使UI可见。不过,如果我的思路正确,还有其他方法可以解释…@Poorkenny是的,Java程序驻留在主机上,并在启动时被调用。操作系统是带有SP1的Windows 2008服务器R2。请帮忙找出可能的方法