我有需要管理员才能运行的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())
始终为0,而不是来自myexe.exe的%errorlevel%。
然后我尝试通过& end echo %errorlevel%
连接命令。然后我打开输入流并读取echo写的内容。它总是读为0。
它适用于批处理文件:
myexe.exe
echo %errorlevel&
但不像ProcessBuilder那样内联。有什么帮助吗?
答案 0 :(得分:0)
要获得“errorlevel”(实际上是进程退出值),您可以使用类似
的内容Process p = processBuilder.start();
int errorLevel = p.waitFor();
Process.waitFor()
Javadoc说(部分),
<强>返回:强>
此
Process
对象表示的子进程的退出值。按照惯例,值0
表示正常终止。