Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java运行setup.exe文件_Java_Security_Permissions_Runtime.exec - Fatal编程技术网

如何使用java运行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

我正在开发一个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, 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()
,当然要等待它完成。非零退出代码很可能表示失败,但请检查您的特定设置。