2

我需要从我的集成测试中杀死 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”之类的东西可以正常工作。

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

4

1 回答 1

0

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

于 2012-09-21T17:19:40.037 回答