![](/img/trans.png)
[英]Start Java Runtime Process with Administrator rights on Vista
[英]Need to start process which needs admin rights from Java code and get back errorlevel
我有需要管理员权限才能运行的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那样内联。 有什么帮助吗?
要获取“错误级别”(确实是进程退出值),可以使用类似
Process p = processBuilder.start();
int errorLevel = p.waitFor();
Javadoc的Process.waitFor()
说(部分),
返回:
此
Process
对象表示的子流程的退出值。 按照惯例,值0
表示正常终止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.