6

私が使用する私のJavaアプリケーションで

Runtime.getRuntime().exec("taskkill /F /IM " + explorer.exe).waitFor();

Windows エクスプローラーを閉じます。この部分は、Explorer が実際に機能しなくなるため機能します。

残念ながら、私が使用するとき

Runtime.getRuntime().exec("explorer.exe");

Windows エクスプローラーがまったく再起動しません。どうすれば適切に再起動できますか?

4

3 に答える 3

1

Javaから外部プログラムを実行しているので、それがうまくいかない理由はわかりません。Javaが再起動しないのはJavaのせいではないと思います。再起動の方法に問題がある可能性があります。私はあなたに代替手段を提供します:

を使用する代わりに、プロセスの開始Runtime.exec()を試み 、クラスProcessBuilder.start()のメソッドを使用してプロセスを強制終了します。ビルダーを使用して Explorer を表すオブジェクトを作成し、それを type の変数に割り当てるだけで問題なく動作するはずです。destroy()ProcessProcess

ProcessBuilder を使用した方が簡単だと思う唯一の理由は、引数を個別の文字列として受け取り、スクリプトの構成が容易になるためです。

例:

List<String> params = java.util.Arrays.asList("C:\myProgram.exe", "-arg1", "-arg2");
ProcessBuilder pb = new ProcessBuilder(params);
Process process = pb.start(); 

試してみてください。うまくいくと思います。

于 2012-12-30T22:45:05.950 に答える
0

問題は、[explorer.exe] を強制終了した後、新しいランタイム環境を取得できないことにあると思います。私にとってうまくいったのは、[explorer.exe] を強制終了するために使用したランタイム環境を再利用することでした。これは、Java(TM) 内から特定のシステム リソースを編集できるので便利です。

public class KillRestart {
   public static void main (String [] args) {
      Runtime runtime = Runtime.getRuntime ();

      try {
         System.out.println ("Killing Explorer.exe process ... ");
         runtime.exec ("taskkill /F /IM explorer.exe /T").waitFor ();

         // Do something wild like update system resources

         System.out.println ("Resurrecting Explorer ...");
         runtime.exec ("explorer.exe");
      }
      catch (InterruptedException e) {
         e.printStackTrace ();
      }
      catch (IOException e) {
         e.printStackTrace ();
      }
   }
}
于 2013-03-25T10:47:33.463 に答える