繁体   English   中英

需要启动需要来自Java代码的管理员权限的进程并获取错误级别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM