2014-04-15 74 views
0

我目前正在開發一個將多個便攜式系統管理工具(主要是sysinternal工具)分組的研究工具。我有一個簡單的JButton框架。Java - 使用管理權限執行EXE

我想要做什麼? - 隨着我的java文件,我有一個exe文件(例如,目的讓我們使用config.exe)需要提升權限運行。

用戶點擊按鈕後,我該如何執行此文件?

編輯:我只是找到了另一種方式來做到這一點。我從我的jar文件中創建了一個exe文件,然後轉到兼容性選項卡並選中「始終以管理員身份運行」感謝您的全力幫助。

回答

1

首先找到其中的exe文件被創建located.Then命名爲

「Your_Exe_File_Name名爲」 .exe.manifest

只要把下面的內容保存到一個文本文件的目錄該文件並保存。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity version="1.1.1.1" 
    processorArchitecture="X86" 
    name="MyApp.exe" 
    type="win32"/> 
    <description>elevate execution level</description> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
    <requestedPrivileges> 
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> 
    </requestedPrivileges> 
    </security> 
    </trustInfo> 
</assembly> 

現在在您的java代碼中使用它來調用exe.It將被自動調用Admin Rights。

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2",).start(); 
InputStream is = process.getInputStream();//Get an inputstream from the process which is being executed 
InputStreamReader isr = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(isr); 
String line; 
while ((line = br.readLine()) != null) { 
System.out.println(line);//Prints all the outputs.Which is coming from the executed Process 
} 

我認爲這會對您有所幫助。

+0

你好,謝謝你的有用信息。我正在使用Launch4j將清單添加到exe文件,但在編譯完exe後,我總是收到錯誤「應用程序未能啓動,因爲它的並排配置不正確。」我怎麼能克服這個? Thx –

+0

好吧,在將清單嵌入到exe之前,您是否運行過它。結果如何? – ShihabSoft

+0

是的,我可以運行它,但我不能執行exe。我有一個關於權限的奇怪的錯誤。我的程序有兩個主要的功能,改變網絡接口的IP地址和打開其他程序,但現在,如果我右鍵單擊exe文件和「以管理員身份執行」,我可以更改網絡接口ip但不能運行exes。如果我只是執行jar文件,我可以運行exes但不能更改ip地址。對此有何暗示? –

0

看到你試圖運行一個exe文件,我會認爲這是Windows。

在Java執行外部命令的標準方法是.exec命令:

Runtime.getRuntime().exec("path\to\config.exe"); 

現在,讓config.exe以管理員運行,你需要做的是將其設置爲從Windows管理員身份運行什麼。在資源管理器中右鍵單擊該文件,然後選擇Properties。選擇Compatibility選項卡並在底部附近檢查Run this program as administrator。現在,無論程序何時運行,它在運行之前都會要求提升權限。