我需要从集成测试中终止windows(windowsxp32位)上的外部进程。我想我只需要使用'taskkill.exe',但我似乎无法让它工作。基本上,每当我从Java启动一个“TaskDebug .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程序,这些程序在Windows\System32下运行,我也得到-10737…
执行诸如“dir”或“echo”之类的命令可以正常工作。
有什么问题吗?

最佳答案

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

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

10-10 18:20
查看更多