2013-01-18 32 views
3

我正在開發一個java應用程序,我必須從中運行xyz_setup.exe安裝程序。我嘗試下面的代碼如何使用java運行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 

任何一個可以建議我如何做到這一點?

+2

http://stackoverflow.com/questions/1385866/java-run-as-administrator – madhairsilence

+0

@madhairsilence爲Java開發人員的可能的複製,你並不總能控制運行你的代碼的可執行文件(比如'java.exe') - 通常做清單文件等不是一種選擇。這是合法的問題,一個可能的解決方案是通過'cmd'運行程序,該程序知道如何請求權限提升。他並沒有要求提升當前流程 - 他只想運行升級設置,這是一個不同的問題,所以這不是重複的。 – Cozzamara

回答

5

對於需要訪問權限的可執行文件,Java(或可能是任何其他直接使用CreateProcess系統調用的進程)效果不佳。 您可以通過shell執行程序繞開這個問題:

String command = "C:\\setup.exe"; 
    Runtime.getRuntime().exec("cmd /c "+command); 
+0

這是完美運行,但是當可執行文件位於以下位置時,它顯示錯誤。 **路徑:E:\\新建文件夾\\ Setup.exe ** – upendra

+1

這是因爲文件夾名稱中有空格 - 用雙引號括起來:'Runtime.getRuntime()。exec(「cmd/c \」「+命令+「\」「);' – Cozzamara

+0

謝謝。它工作正常。是否有可能跟蹤安裝進度。這意味着在完成Setup.exe安裝後,我必須通過java顯示「成功完成安裝」消息。方面的 – upendra