기존 .exe 파일을 한 디렉토리에서 다른 디렉토리로 복사하고 나중에 Java로 실행하려고합니다. 이처럼 :Java : exe 파일 복사 및 이후 실행 실패
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
그래서 자바 파일이 유효하고 기존이지만, 파일이 아닌 생각하기 때문에 윈도우 그냥 프로세스를 시작할 수 없습니다 말한다 그곳에. pathes는 백 슬래시로 절대적입니다. 또한 파일에 대한 모든 권한을 가지고 있으므로 실행할 수 있습니다. Launcher.new.exe는 Launch4j에 의해 생성되므로 다소 독립형입니다. 적어도 그것은 같은 폴더에있는 DLL에 의존하지 않습니다. 하지만 이상한 점 : notepad.exe를 복사하고 실행하면 작동합니다.
하나 더 이상한 점 : Java로 파일을 복사하지 않고 손으로 복사해도 동일한 오류가 발생하여 실행이 실패합니다.
OS는 Vista SP1입니다.
단서가 있습니까?
ProcessMonitor는 파일이 시작되었다는 오류와 클레임을 표시하지 않습니다.그러나 이후에는 아무 일도 일어나지 않았다. – Philip
당신은 어떤 종류의 과정을 시작하려고합니까? Vista에서는 UAC에 파울이 떨어질 수 있습니다. – mdma
그것은 나에 의해 개발 된 .exe입니다. UAC가 튀어 나오지 않습니다. 또한 샌드 박스와 같은 기능을 가진 "보안 소프트웨어"도 없습니다. – Philip