0
我有exe文件需要管理权限才能运行。我使用的ProcessBuilder是这样的:需要从Java代码启动需要管理权限的进程并获取错误级别
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,而不是my.exe.exe的%errorlevel%。
然后我尝试连接命令& end echo %errorlevel%
。然后,我打开输入流并读取回写的内容。它始终为0。
它工作在批处理文件:
myexe.exe
echo %errorlevel&
但不是内联作为的ProcessBuilder。任何帮助?
它不起作用。 waitFor()返回0,但如果我从cmd行运行myexe.exe,然后echo%errorlevel%,我得到了544. – bizdej 2015-02-05 13:09:50
@bizdej然后我认为你运气不好。以上是如何从Java子进程获取“errorlevel”。 – 2015-02-05 13:19:54
是的,但my.exe在这种情况下是java subsubsubprocess;)。 cmd.exe是子进程。那就是问题所在。可能是我需要准备将%errorlevel%存储到文件中的批处理文件,并且我的Java应用程序将读取它,但这是如此肮脏的解决方案! – bizdej 2015-02-05 13:22:21