【发布时间】:2015-04-05 08:28:56
【问题描述】:
我有需要管理员权限才能运行的 exe 文件。我以这种方式使用 ProcessBuilder:
ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe", "/C", "start", "/wait", "myexe.exe", "&", "echo", "%errorlevel%");
Process p = processBuilder.start();
作为 ProcessBuilder 构造函数参数的一部分,必须有 cmd.exe /C,因为没有它就无法启动 myexe.exe - 我总是收到错误消息
请求的操作需要提升。
使用cmd.exe /C 正常启动,UAC 询问我是否确定启动它。但后来我得到了
java %errorlevel% from cmd.exe (process.exitValue())
myexe.exe 中始终为 0 而不是 %errorlevel%。
然后我尝试通过& end echo %errorlevel% 连接命令。然后我打开输入流并读取 echo 写入的内容。它总是读取 0。
它在批处理文件中工作:
myexe.exe
echo %errorlevel&
但不像 ProcessBuilder 那样内联。有什么帮助吗?
【问题讨论】: