2017-11-23 14 views
1

私はSSHサーバーを実行しており、JavaFXアプリケーションを閉じて開く必要があります。 freeSSHdとJSCHを使用して、私が使用してアプリケーションを終了することができました:リモートサーバー(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コンソールでコマンドを実行すると同じことが起こります。

「セッション0アイソレーション」に関連していると思いますが、私はこれが何を意味するのか分かりません。

+0

「リモートコンピュータで直接」*とはどういう意味ですか? –

+0

@MartinPrikryl私はそれを普通に開けるのでアプリケーションを開く必要があります(瓶をダブルクリックしますが、遠隔に) –

答えて

1

通常、(SSH)サーバーはWindowsサービスとして実行されます。

ウィンドウサービスは別のWindowsセッション(google for 「セッション0分離」)で実行されます。対話型(ユーザー)Windowsセッションにはアクセスできません。

"Interactive Services Detection"がアプリケーションをブロックしているとは限りません。これは逆です。これは、サービスが目に見えないセッション0にGUIを表示しようとしていることを検出し、ユーザーセッションでGUIを複製できるようにする「Interactive Services Detection」サービスです。

また、Windowsに複数のユーザーセッション(複数のログインユーザー)が存在する可能性があります。 SSHサーバはどのようにしてGUIを表示するのですか? 「対話型サービス検出」はすべてのユーザーセッションでプロンプトを表示し、プロンプトを受け入れる最初のユーザーがGUIを獲得すると推測します(ただし、これは単なる推測です)。


SSHサーバーは、サービスとしてではなく、対話型のWindowsセッションで実行できます。それには限界がある。実際にFreeSSHDは、インストール時に、サービスとしてインストールするかどうかを尋ねます。

FreeSSHdの使用はお勧めしませんが、それはかなりバギーで、よく管理されていません。一般的に


、このすべて(リモートからSSH経由のWindows上でGUIアプリケーションを実行するには)私には良いアイデアのようには見えません。

+0

ありがとう、マーティン。それは今、それはWindowsサービスとして実行されている意味があります!私はすでにSSHを使用してプロセスを終了することができるので、GUIを開く別のアプローチを試みます。 –

関連する問題