为什么我的Java应用程序成功关闭了Windows资源管理器,但又无法重新启动它?

tb9*_*b96 5 java windows-explorer kill-process windows-7

在我的java应用程序中我使用

Runtime.getRuntime().exec("taskkill /F /IM " + explorer.exe).waitFor();
Run Code Online (Sandbox Code Playgroud)

关闭Windows资源管理器.这部分有效,因为Explorer真的停止为我工作.

不幸的是,当我使用时

Runtime.getRuntime().exec("explorer.exe");
Run Code Online (Sandbox Code Playgroud)

Windows资源管理器根本不重新启动.我该如何正确重启?

sfr*_*frj 1

我不知道为什么这对你不起作用,因为你正在从java执行外部程序,我认为它没有重新启动不是Java的错,也许你重新启动的方式有问题。我会给你一个替代方案:

不要使用Runtime.exec(),而是尝试 ProcessBuilder.start()启动进程并使用destroy()类中的方法Process来终止进程。它应该可以正常工作,只需使用构建器创建一个代表资源管理器的对象并将其分配给类型的变量Process

我认为使用 ProcessBuilder 可能会更容易的唯一原因是因为它将参数作为单独的字符串,也许这使得配置脚本变得更容易。

例子:

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

尝试一下我认为它应该有效。