无法从java进程使用taskkill.exe

我需要从我的集成testing中杀死Windows(WindowsXP 32位)上的外部进程。 我以为我只是使用'taskkill.exe',但我似乎无法得到它的工作。 基本上,每次我从Java启动一个“taskkill.exe”进程它返回退出值-1073741515,没有什么打印到std错误/输出。

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

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中使用纯批处理文件运行应用程序,请右键单击并选择Run as administrator并查看结果。 您运行的帐户可能没有足够的权限来执行本机应用程序。