2014-02-28 48 views
1

我遇到了從路徑執行.exe的麻煩。我搜索谷歌和檢查推薦的這個主題,但他們不會工作...如何在C#中從路徑運行.exe

我想從某個路徑運行一個.exe,但它只是說它找不到該文件?

我想這一點:

const string ex1 = "C:\\"; 
const string ex2 = "C:\\Desktop\\3D Survival\\3\\Test\\"; 

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.CreateNoWindow = false; 
startInfo.UseShellExecute = false; 
startInfo.FileName = "3D Survival.exe"; 
startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
startInfo.Arguments = "-f j -o \"" + ex1 + "\" -z 1.0 -s y " + ex2; 

try 
{ 

    using (Process exeProcess = Process.Start(startInfo)) 
    { 
     exeProcess.WaitForExit(); 
    } 
} 
catch 
{ 
    // Log error. 
} 

這給我的文件沒有發現過,我也曾嘗試的Process.Start( 「3D Survival.exe」);它仍然說沒有找到文件..是的文件確實存在。

有沒有人有修復?

+0

執行應用程序是否可以訪問** 3D Survival.exe **?它可能存在於其他某個路徑上,Windows無法解析爲任何默認位置。 – Abhinav

+0

* 3D Survival.exe *程序是否與啓動應用程序的文件夾相同? – Steve

+0

我可以將.exe添加到相同的文件夾,但我需要它從某個目錄執行。 – user2913720

回答

0

您的代碼假定「3D Survival.exe」存在於當前工作目錄中。您需要提供絕對路徑或相對於工作目錄的路徑。

如果你希望它是相對於你的執行程序,使用這樣的:

Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), pathToExe); 

爲了得到當前工作目錄只需使用:

Directory.GetCurrentDirectory(); 

你的工作目錄可能比你不同認爲它是,並且這將肯定地告訴您。

要做一個絕對路徑,只需將整個路徑放入Process.Start或放入StartInfo.FileName

+0

謝謝!它的工作,不知道它是那麼簡單.. – user2913720

+0

很高興你發現我的答案有幫助。 – BradleyDotNET