2017-06-05 46 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 我不知道你的程序。如果您启动已升级的程序跳过此步骤可能会更容易。但我不知道你的程序的使用是否允许。 –