如何使用java运行setup.exe文件
我正在开发一个java应用程序,必须从中运行xyz_setup.exe安装程序。我尝试了以下代码如何使用java运行setup.exe文件,java,security,permissions,runtime.exec,Java,Security,Permissions,Runtime.exec,我正在开发一个java应用程序,必须从中运行xyz_setup.exe安装程序。我尝试了以下代码 String command = "C:\\xyz_setup.exe"; Runtime.getRuntime().exec(command);` 但它抛出了以下错误 java.io.IOException: Cannot run program "C:\Users\NewtonApples\Downloads\idman614.exe": CreateProcess error=740, T
String command = "C:\\xyz_setup.exe";
Runtime.getRuntime().exec(command);`
但它抛出了以下错误
java.io.IOException: Cannot run program "C:\Users\NewtonApples\Downloads\idman614.exe": CreateProcess error=740, The requested operation requires elevation
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
at java.lang.Runtime.exec(Runtime.java:615)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
at upendra.OpenExternalApplication.main(OpenExternalApplication.java:19)
Caused by: java.io.IOException: CreateProcess error=740, The requested operation requires elevation
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:189)
at java.lang.ProcessImpl.start(ProcessImpl.java:133)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)
... 4 more
java.io.IOException:无法运行程序“C:\Users\NewtonApples\Downloads\idman614.exe”:CreateProcess error=740,请求的操作需要提升
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
位于java.lang.Runtime.exec(Runtime.java:615)
位于java.lang.Runtime.exec(Runtime.java:448)
位于java.lang.Runtime.exec(Runtime.java:345)
位于upendra.openexternalaplication.main(openexternalaplication.java:19)
原因:java.io.IOException:CreateProcess error=740,请求的操作需要提升
在java.lang.ProcessImpl.create(本机方法)
位于java.lang.ProcessImpl。(ProcessImpl.java:189)
在java.lang.ProcessImpl.start(ProcessImpl.java:133)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)
... 4更多
有人能给我建议怎么做吗?Java(或者任何其他直接使用CreateProcess
系统调用的进程)对需要访问权限提升的可执行文件不好。
您可以通过shell执行您的程序来解决这个问题:
String command = "C:\\setup.exe";
Runtime.getRuntime().exec("cmd /c "+command);
可能与@MadhailSilence重复作为Java开发人员,您并不总是能够控制运行代码的可执行文件(如
Java.exe
),通常不可以执行清单等操作。这是一个合理的问题,一个可能的解决方案是通过cmd
运行程序,它知道如何请求权限提升。他没有要求提升当前进程-他只想运行提升的安装程序,这是另一个问题,因此这不是重复的。这运行得很好,但当可执行文件位于以下位置时,它显示了一个错误。路径:E:\\New folder\\Setup.exe这是因为文件夹名中有空格-用双引号括起来:Runtime.getRuntime().exec(“cmd/c\”“+command+”\)代码>谢谢。很好用。是否可以跟踪安装的进度。这意味着在完成Setup.exe安装后,我必须通过java显示“成功完成安装”消息。当然要考虑。返回类型为的对象。在此基础上,您可以执行exitValue()
以获取安装程序的退出代码getOutputStream()
和getErrorStream()
将为您提供其标准输出和标准错误流。要获得所有这些,您必须首先执行Process.waitFor()
,当然要等待它完成。非零退出代码很可能表示失败,但请检查您的特定设置。