サーバーとクライアントがあり、クライアントはwrapperを使用してバックグラウンドで実行されています。サーバーは以下を使用してクライアントにコマンドを送信しSocketChannels
、クライアントは次の方法でコマンドを実行します。
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command);
これは、通常のようにコンソールからクライアントを実行するときにうまく機能します。しかし、Windows サービスとして実行すると、いくつかのコマンドが機能しません。例えば:
runtime.exec("shutdown -s -t 300");// works perfectly
runtime.exec("shutdown -a"); // works perfectly
runtime.exec("shutdown -l"); // works only when client started from console
// note that these commands will shutdown your computer or log off
3 番目のコマンドは単に何もしていないため、プログラムは正常に動作します。コマンドを別々にランダムな順序で実行しますが、違いはありません。私はWindowsを使用しています。
それで、私は何を間違っていますか?
また、サービス「notepad.exe」(またはフルパスを持つ別の.exe)から実行できません。これを行う正しい方法を知りたいです(コンソールからも機能します)。