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

标签 java windows-7 windows-explorer kill-process

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

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

关闭 Windows 资源管理器。这部分有效,因为 Explorer 真的不再为我工作。

不幸的是,当我使用

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

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

最佳答案

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

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

我认为如果您使用 ProcessBuilder 可能会更容易的唯一原因是因为它将参数作为单独的字符串,并且这可能使您更容易配置脚本。

例子:

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

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

关于java - 为什么我的 Java 应用程序成功关闭 Windows 资源管理器,但无法再次重新启动它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14092950/

相关文章:

java - 如何将文件夹的 URL 传递到小程序中的代码库?

windows - Tortoise SVN + 虚幻指挥官

Delphi在Windows资源管理器右键添加菜单项

.net - 为什么有时用十六进制字符填充进程镜像名称?

c# - 表单没有响应,但计时器仍在运行

asp.net - Windows 7 无法创建 SSL/TLS 安全通道。"} System.Net.WebException

c# - .NET:如何创建文件图标覆盖

java - 将流写入 Excel 文件

java - 如何以可以向用户显示的方式将 EUC-JP 转码为 Unicode?

java - 第二次调用 re.eval("source()) 因 JRI 失败