2017-06-05 75 views
1

我工作的一個數據包分析程序,並遇到了一些問題:爲什麼不能從這段代碼啓動.exe文件?

  1. 我想打開,將捕獲數據包,並寫入到另一個文件中的exe文件。
  2. 我想在高架模式下打開它。

我有所記載:

import java.awt.Desktop; 
import java.io.File; 
import java.io.IOException; 
import javax.swing.JOptionPane; 

public class Options extends javax.swing.JFrame { 
    private void recActionPerformed(java.awt.event.ActionEvent evt) { 
     if (Desktop.isDesktopSupported()) { 
      try { 
       File myFile = new File(
         "C:\\Users\\HP\\Documents\\response\\Server_Analyser\\src\\server_analyser\\serverdump\\reader.exe"); 
       Desktop.getDesktop().open(myFile); 
      } catch (IOException e) { 
       JOptionPane.showMessageDialog(null, "Sorry cannot find desired file !"); 
      } 
     } 
    } 
} 
+0

除了使用Desktop之外,請在創建之前創建一個[ProcessBuilder](http://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html),並調用其inheritIO()方法該過程。這會告訴你哪裏出了問題 - 我懷疑這將成爲關於權限不足的消息。 – VGR

+2

「打開一個exe文件」並不意味着你認爲它的意思。你的代碼打開它,但你想要做的就是運行它。 –

回答

1

Desktop.getDesktop().open(FILE)命令打開,只有相關的程序文件。這可以用於與記事本關聯的.txt文件。由於.exe沒有關聯,因爲它本身就是一個程序,所以它不起作用。

從Java代碼運行.exe您可以使用此命令

Process process = new ProcessBuilder("C:\\Users\\HP\\Documents\\response\\Server_Analyser\\src\\server_analyser\\serverdump\\reader.exe").start(); 

這樣你也可以在你的Java應用程序,例如控制程序執行再次關閉它。

+0

我明白了。請幫助我瞭解如何在提升模式下打開EXE文件。 –

+0

這是在這裏回答https://stackoverflow.com/questions/1385866/java-run-as-administrator 我不知道你的程序。如果您啓動已升級的程序跳過此步驟可能會更容易。但我不知道你的程序的使用是否允許。 –