我想將一個現有的.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
所以Java說,該文件是有效的和現有的,但Windows,因爲它認爲該文件是不是就不能啓動進程那裏。路徑是絕對的,並帶有反斜槓。我也擁有對這些文件的所有權限,所以我可以執行它們。 Launcher.new.exe由Launch4j生成,因此它或多或少是獨立的。至少它不依賴於同一個文件夾中的DLL。但奇怪的是:它在我複製並啓動notepad.exe時起作用。
還有一件奇怪的事情:如果我不通過Java複製文件,而是手動複製文件,啓動失敗時也會出現相同的錯誤。
操作系統是帶有SP1的Vista。
任何線索?
ProcessMonitor顯示沒有錯誤並聲明文件已啓動。但之後也沒有發生任何事情。 – Philip 2010-05-20 14:53:33
你試圖啓動什麼樣的過程? Vista中可能會對UAC犯規。 – mdma 2010-05-20 14:57:14
這是我開發的一個.exe文件。沒有UAC彈出。 也沒有沙箱般的東西的「安全軟件」。 – Philip 2010-05-20 14:58:42