java - 无法从 Java 进程使用 taskkill.exe

标签 java windows taskkill

我需要从我的集成测试中终止 Windows(WindowsXP 32 位)上的外部进程。我以为我只是使用“taskkill.exe”,但我似乎无法让它工作。基本上,每次我从 java 启动“taskkill.exe”进程时,它都会返回退出值 -1073741515,但不会向标准错误/输出打印任何内容。

为了重现这个问题,我编写了这个简单的应用程序:

public static void main(String[] args) throws Exception {
    ProcessBuilder builder = new ProcessBuilder();
    //In my real code, I kill process by its pid. However below also shows the problem:
    builder.command("taskkill.exe", "/?");
    builder.redirectErrorStream(true);
    Process p = builder.start();
    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = r.readLine();
    System.out.println("out:");
    while(line != null) {
        System.out.println(line);
        line = r.readLine();
    }
    System.out.println(p.waitFor());
}

更多数据点:

  • -1073741515 显然意味着“应用程序未能正确初始化”。虽然对我帮助不大 ;)
  • 我尝试了一堆 taskkill.exe 参数的组合;我试过在命令前加上“cmd”、“/c”。症状完全一样
  • 我尝试执行位于 windows\system32 下的其他 Windows 程序,我也得到 -10737...
  • 执行“dir”或“echo”之类的操作正常。

关于可能是什么问题的任何提示?

最佳答案

您是否尝试过以不同的用户身份执行您的应用程序?如果您在 Windows 中使用纯批处理文件运行您的应用程序,请右键单击并选择 以管理员身份运行 并查看结果。您运行的帐户可能没有足够的权限来执行 native 应用程序。

关于java - 无法从 Java 进程使用 taskkill.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534659/

相关文章:

java - 从 Pig UDF 访问 HDFS

java - 用java读取content-disposition文件

java - 为什么我的 java ping 方法只在我的电脑上有效? (Windows机器已测试)

c - 如何在不知道其名称的情况下获取 JobObject 的句柄?

python - 运行时错误 : Graph ops missing from the python registry ( {'SentencepieceEncodeSparse' }) are also absent from the c++ registry

python - 无法在 Windows 上使用 Python 终止正在运行的子进程

java - JAR 文件如何 self 删除?

batch-file - taskkill 关闭进程是否安全?

java - 实现克隆方法 - 错误 java : clone() has protected access in java. lang.Object

java - 创建子对象,子构造函数不使用OOP