运行时exec无法在appdata中运行程序?

时间:2017-04-08 22:50:35

标签: java

我一直在搞乱运行一些.exe文件,好像有什么阻止它在appdata中运行它?

Runtime.getRuntime().exec(System.getenv("APPDATA") + "test.exe");

这是我得到的错误

java.io.IOException: Cannot run program "C:\Users\Cole": CreateProcess error=2, The system cannot find the file specified

2 个答案:

答案 0 :(得分:1)

您不应该使用普通的exec(String)方法,因为它需要特定于操作系统的转义。如果你使用string array version,它应该找到可执行文件。

在将变量与文件名连接之前,检查变量是否存在以及是否以\结尾也是一个好主意。或者更好地使用分层文件构造函数:

String appdata = System.getenv("APPDATA");
if (appdata == null || appdata.trim().isEmpty())
  appdata=".";
String fileName = new File(appdata, "test.exe").getAbsolutePath();
Runtime.getRuntime().exec(new String[]{fileName /*, noargs */});

答案 1 :(得分:0)

一种简单的方法是使用File对象构建路径。

final String f = new File(System.getenv("APPDATA"), "test.exe").toString();
final Process p = Runtime.getRuntime().exec(new String[] { f });