Java:复制 exe 文件并随后启动失败

标签 java process copy windows-vista launch

我想将现有的 .exe 文件从一个目录复制到另一个目录,然后使用 Java 启动它。像这样:

FileIO.copy( new File( sourceFile ), new File( targetFile ) );
System.out.println( "Existing: " + new File( targetFile ).exists() );
System.out.println( "Launching " + targetFile );
String cmd[] = { targetFile };
Process p = Runtime.getRuntime().exec( cmd );
p.waitFor();
System.out.println( "Result: " + p.exitValue() );

输出如下:

Existing: true
Launching C:\test\Launcher.new.exe
Result: 2

因此 Java 表示该文件有效且存在,但 Windows 无法启动该进程,因为它认为该文件不存在。路径是绝对的并且带有反斜杠。我还拥有这些文件的所有权限,因此我可以执行它们。 Launcher.new.exe 由 Launch4j 生成,因此它或多或少是独立的。至少它不依赖于同一文件夹中的DLL。但奇怪的是:当我复制并启动 notepad.exe 时它就起作用了。

还有一件奇怪的事情:如果我不通过 Java 而是手动复制文件,启动也会失败并出现相同的错误。

操作系统是带有 SP1 的 Vista。

有什么线索吗?

最佳答案

嗯...我想知道这是否是 Vista 出色的用户访问控制在起作用...

您在程序文件中工作吗?如果是这样,请将所有内容移至单独的文件夹 (c:\CopyTest) 中,然后重试 - 看看是否有帮助...

关于Java:复制 exe 文件并随后启动失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2874896/

相关文章:

java - 如果我使用 JDK 8,我的应用程序会在 android 4.0 上运行吗

shell - 如何测试 Bash 中是否存在进程?

linux - linux下将文件从一个路径复制到另一个路径

python - 在python中复制变量

python - 尝试在Python脚本中复制文件,但不起作用

java - 如何在返回类型为 int[] 的函数中声明长度未知的整数数组?

java - 使用 javamail 时附件的奇怪读/写时间

c#-4.0 - Process.GetProcesses 返回所有登录用户的进程?

linux - Ubuntu 16.04 显示孤儿进程的父 ID 4147

java.lang.IllegalArgumentException : Not a managed type: class