Невозможно использовать taskkill.exe из процесса Java

Мне нужно убить внешний процесс в Windows (WindowsXP 32bit) из моего интеграционного теста. Я думал, что просто использую 'taskkill.exe', но не могу заставить его работать. По сути, каждый раз, когда я запускаю процесс taskkill.exe из java, он возвращает значение выхода -1073741515, ничего не выводится в std error/output.

Чтобы воспроизвести проблему, я написал это простое приложение:

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', работает нормально.

Любые намеки на то, в чем может быть проблема?

1 ответ

Вы пытались выполнить ваше приложение от имени другого пользователя? Если вы запускаете свое приложение с простым командным файлом в Windows, щелкните правой кнопкой мыши и выберите Run as administrator и посмотреть результаты. Вероятно, у учетной записи, под которой вы работаете, недостаточно прав для запуска собственных приложений.

Другие вопросы по тегам