Я создаю функциональность для удаленного перезапуска служб Windows, но встроенная в код строковая команда не возвращает желаемый вывод, копирование той же команды при отладке из IDE и ее запуск в CMD выполняется успешно.
Я попытался перейти от использования метода Process cmdOutput Runtime.getRuntime (). Exec (команда) к процессу cmdOutput Runtime.getRuntime (). Exec (команда []).
Я пытался по-разному манипулировать моей строковой командой, чтобы определить, будет ли она выполнена безуспешно.
Я смотрел на подобные вопросы в StackOverflow, но ни один из них не испытывает того, что испытываю
public void startService(int serviceId, String serviceName, String
ipAddress) {
CMDExecutor executor = new CMDExecutor();
try {
String command = "cmd /C echo "+ password +" runas /user:"+
username +" "+ "\""+
System.lineSeparator() +" sc\\\\" +ipAddress+ " start "+
serviceName + "\"";
String result = executor.getCMDResult(command);
logger.info(result);
}
public class CMDExecutor {
public String getCMDResult(String command) throws IOException {
Process cmdOutput;
cmdOutput = Runtime.getRuntime().exec(command);
StringWriter writer = new StringWriter();
IOUtils.copy(cmdOutput.getInputStream(), writer, "UTF-8");
return writer.toString();
}
}
Я ожидаю ниже
SERVICE_NAME: serviceName
TYPE : 10 WIN32_OWN_PROCESS
STATE : 2 START_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x7d0
PID : 34916
FLAGS :
Я возвращаю часть команды и ничего не меняется, служба не запускается.