使用参数运行进程时,Java 8 Acces被拒绝

时间:2017-01-28 18:09:23

标签: process java-8 access processbuilder denied

在我的程序中,我需要在进程中运行exe文件。我正在使用ProcessBuilder。当我只对目录和exe名称进行编码时,进程正常运行,但我想放置参数。当我尝试它时,我会通过Acces Denied消息获得异常。 这是我的代码:

Process process = new ProcessBuilder("C:\\Directory", "file.exe", argument1).start();

它出了什么问题?

我之前的代码,虽然有效,但没有参数:

 String folder = "C:\\Directory";
 String exe = "File.exe";  
 ProcessBuilder pb = new ProcessBuilder();
 pb.command(folder + exe);
 pb.start();

使用此代码,我可以在ProcessManager中看到启动过程。

1 个答案:

答案 0 :(得分:1)

您的代码正在尝试执行C:\\Directory,这是不允许的。

可执行文件的完整路径必须位于构造函数的第一个参数中,因此:

Process process = new ProcessBuilder("C:\\Directory\\file.exe", argument1).start();

这假设C:\Directory\file.exe是您尝试运行的程序。

更新:在您的原始代码中:

 String folder = "C:\\Directory";
 String exe = "File.exe";  

所以'folder + exe'是C:\DirectoryFile.exe所以你的等效代码是:

Process process = new ProcessBuilder("C:\\DirectoryFile.exe", argument1).start();