2017-01-28 31 views
-1

在我的程序中,我需要运行exe文件。我正在用ProcessBuilder进行。当我把代码只有目录和exe名称,进程正常运行,但我想把参数。当我尝试它时,我收到Acces Denied消息的异常。 这是我的代码:Java 8 Acces在参数运行过程中被拒绝

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的。

+0

您可以发布日志?和[尝试禁用UAC](http://www.howtogeek.com/howto/windows-vista/disable-user-account-control-uac-the-easy-way-on-windows-vista/) –

+0

这不是使用禁用的UAC – Higu

回答

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"; 

所以 '文件夹中的exe +' 是C:\DirectoryFile.exe所以相当于你的代码:

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

使用此代码我无法在ProcessManager中找到此过程。我以前的代码工作是:ProcessBuilder pr = new ProcessBuilder(); pr.command(文件夹+ exe);当文件夹是没有exe.file目录和exe文件只是文件.exe。 – Higu

+0

但是这个早期的代码没有与参数一起工作。 – Higu

+0

你想要执行什么样的**? –