为什么不能从这段代码启动.exe文件?
问题描述:
我工作的一个数据包分析程序,并遇到了一些问题:为什么不能从这段代码启动.exe文件?
- 我想打开,将捕获数据包,并写入到另一个文件中的exe文件。
- 我想在高架模式下打开它。
我有所记载:
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 !");
}
}
}
}
答
的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 我不知道你的程序。如果您启动已升级的程序跳过此步骤可能会更容易。但我不知道你的程序的使用是否允许。 –
除了使用Desktop之外,请在创建之前创建一个[ProcessBuilder](http://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html),并调用其inheritIO()方法该过程。这会告诉你哪里出了问题 - 我怀疑这将成为关于权限不足的消息。 – VGR
“打开一个exe文件”并不意味着你认为它的意思。你的代码打开它,但你想要做的就是运行它。 –