Ich weiß nicht den Grund, warum das nicht für Sie funktioniert, da Sie ein externes Programm von Java ausführen, denke ich, es ist nicht Javas Fehler, dass es nicht neu startet, vielleicht ist etwas falsch in der Art und Weise Sie starten neu. Ich werde Ihnen eine Alternative geben:
Statt Runtime.exec()
zu verwenden, versuchen ProcessBuilder.start()
den Prozess zum Starten und die Methode destroy()
aus der Klasse verwenden Process
den Prozess zu töten. Es sollte in Ordnung funktionieren, verwenden Sie einfach den Builder, um ein Objekt zu erstellen, das den Explorer darstellt, und weisen Sie ihn einer Variablen vom Typ Process
zu.
Der einzige Grund, warum ich denke, dass es einfacher ist, wenn Sie den ProcessBuilder verwenden, ist, weil es Argumente als separate Strings akzeptiert, und das macht es vielleicht einfacher, Ihre Skripte zu konfigurieren.
Beispiel:
List<String> params = java.util.Arrays.asList("C:\myProgram.exe", "-arg1", "-arg2");
ProcessBuilder pb = new ProcessBuilder(params);
Process process = pb.start();
Versuchen Sie es einmal ich denke, es sollte funktionieren.
Killing Explorer ist extrem ärgerlich. Warum willst du das machen? – SLaks
Weil ich eine Anmeldung machen möchte, die vom Benutzer nicht ignoriert werden kann. Wenn der Explorer läuft, ist es einfach, die Windows-Taste auf der Tastatur zu verwenden. – tb96
Töten Explorer ist der falsche Weg, das zu tun. Es gibt Möglichkeiten, das zu tun, was tatsächlich funktioniert, aber Sie können sie in Java nicht wirklich tun. – SLaks