Теперь я вижу, что вы используете -verb runas
для принудительного запроса UAC, если это необходимо.
В этом случае это хороший подход, но по крайней мере вы можете удалить косвенное указание cmd.exe
.Причина, по которой он работает не так, как на самом деле, заключается лишь в том, что вы не указали значения, передаваемые параметру -ArgumentList
.
Попробуйте:
final String PS_COMMAND = "powershell.exe Start-Process -verb runas net.exe -ArgumentList 'start Tomcat7'" ;
Вы слишком усложняете вещи.Нет смысла запускать powershell.exe
для запуска cmd.exe
для запуска net.exe
.
Вам необходимо выполнить одно из следующих действий:
Запустить команду PowerShell:
final String PS_COMMAND = "powershell.exe Start-Service Tomcat7" ;
Или запустить net.exe
напрямую:
final String PS_COMMAND = "net.exe start Tomcat7" ;