gpt4 book ai didi

java - 交互式服务检测显示何时在远程服务器上打开应用程序 (JSch)

转载 作者:行者123 更新时间:2023-11-30 06:24:39 26 4
gpt4 key购买 nike

我有一个正在运行的 SSH 服务器,需要关闭和打开 JavaFX 应用程序。使用 freeSSHd 和 JSch,我能够使用以下命令关闭应用程序:

sendCommand("wmic Path win32_process Where \"CommandLine Like '%Test.jar%'\" Call Terminate");

上面的命令可以毫无问题地关闭应用程序。

当我需要再次启动应用程序时,我尝试使用:

sendCommand("cmd /c cd C:/Test/dist && java -jar Test.jar");

发生的情况是,交互式服务检测打开一个窗口,并显示消息:“此计算机上运行的程序正在尝试显示消息”。打开消息会显示 JavaFX 应用程序。

我需要直接在远程计算机上打开 JavaFX 应用程序,而不显示此内容。这种行为正常吗?我可以使用 SSH (JSch) 实现此目的吗?我知道 PSExec 是一种替代方案,但它必须安装在每台客户端计算机上。

当我在 PuTTY 控制台中尝试该命令时,也会发生同样的情况。

我认为它与“Session 0 Isolation”有关,但我不知道这意味着什么。

最佳答案

通常(SSH)服务器作为 Windows 服务运行。

窗口服务在单独的 Windows session 中运行(Google 搜索“ session 0 隔离”)。他们无法访问交互式(用户)Windows session 。

并不是“交互式服务检测”阻止了应用程序。事实恰恰相反。它是“交互式服务检测”服务,可检测服务是否正在尝试在不可见的 session 0 上显示 GUI,并允许您在用户 session 上复制 GUI。

另请注意,Windows 中可以有多个用户 session (多个登录用户)。 SSH 服务器如何知道在哪个用户 session 上显示 GUI(即使可以)?我猜想(尽管这只是一个猜测)“交互式服务检测”会在所有用户 session 上显示提示,并且第一个接受提示的用户将赢得 GUI。

<小时/>

您可以在交互式 Windows session 中运行 SSH 服务器,而不是作为服务运行。但它也有其局限性。实际上,FreeSSHD 在安装时会询问您是否要将其安装为服务。

尽管我根本不建议您使用 FreeSSHd。它有很多问题,而且维护得不好。

<小时/>

总的来说,这一切(通过 SSH 在 Windows 上远程运行 GUI 应用程序)对我来说看起来并不是一个好主意。

关于java - 交互式服务检测显示何时在远程服务器上打开应用程序 (JSch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47456290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com