2011-08-18 69 views
2

我使用以下Java代碼將文件從一個目錄移動到另一個目錄,然後在目標目錄中執行該文件。我的代碼是該exe不運行

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.File; 
import java.io.IOException; 

import javax.swing.JButton; 
import javax.swing.JDialog; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 


import org.apache.commons.io.FileUtils; 
public class JFileChooserTest { 
    public static void main(String[] args) { 
     String filelocation="C:\\Users\\FSSD\\Desktop\\OutPut\\Target"; 
     File trgDir = new File(filelocation); 
     System.err 
       .println("file location>>>>>>>>>>>>>>>>>>>" 
         + filelocation); 
     File desDir = new File(
       "C:\\Users\\FSSD\\IndigoWorkSpace\\Swing\\test"); 

     try { 
      FileUtils.copyDirectory(trgDir, desDir); 
      // FileUtils.copyDirectory(srcDir, trgDir); 
     } catch (IOException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 

     Runtime rt=Runtime.getRuntime(); 
     try { 
      Process p=rt.exec("test\\setup.exe"); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

雖然我執行此代碼,該文件已成功移動通過我執行此代碼我得到以下錯誤。

java.io.IOException: Cannot run program "test\setup.exe": CreateProcess error=740, The requested operation requires elevation 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
    at java.lang.Runtime.exec(Runtime.java:593) 
    at java.lang.Runtime.exec(Runtime.java:431) 
    at java.lang.Runtime.exec(Runtime.java:328) 
    at JFileChooserTest.main(JFileChooserTest.java:34) 
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:81) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:30) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453) 
    ... 4 more 

這裏我用的 「setup.exe」。它是一個可執行文件。而我在運行時執行我得到了上述錯誤。爲什麼會發生,是否有可能解決它。在此先感謝..

+2

該可執行文件需要管理權限才能運行,您的java應用程序可以作爲管理員運行以便能夠執行它。 –

+0

Windows 7/Vista和UAC? – Matten

+0

@MaurícioLinhares:我使用Windows 7,如果可以通過代碼授予管理員權限。 – Aerrow

回答

3

我猜你正在使用Windows 7,當你運行你的批處理來啓動你的JFileChooser測試時,右鍵單擊並選擇「以管理員身份運行」。

+0

ya,我正在使用Windows 7 ,如果有可能通過代碼給予管理員權限。這裏我在運行時執行「setup.exe」。如果有其他方法可以做到這一點 – Aerrow

+1

你不能用代碼來做到這一點,但是你可能能夠執行另一個批處理過程並在其中使用/ runas命令進行設置。但是,如果您當前的用戶沒有管理員權限,那麼這只是不起作用。 –

1

The requested operation requires elevation

您沒有執行此設置的權限。可能UAC阻止它。

在Java中使用runas命令和Runtime#exec

+0

如果有可能做到這一點... – Aerrow

+0

不是用Java,而是用Rocky的方法,是的。 –

+0

Rocky的進程只有套件如果我手動執行該exe文件,這裏我通過代碼執行exe文件..任何代碼來執行「以管理員身份運行」模式? – Aerrow