Невозможно использовать 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
и посмотреть результаты. Вероятно, у учетной записи, под которой вы работаете, недостаточно прав для запуска собственных приложений.