2014-05-20 25 views
0

我需要啓動一個過程,例如在該路徑不同的目錄中啓動進程:C# - 中的可執行

c:\A\ApplicationToBeLaunched.exe 

我想這個過程中他們的可執行文件的不同路徑運行。該其他文件夾將具有ApplicationToBeLaunched.exe應用程序的所有配置文件。例如,路徑可能是:

c:\B\ 

我想這個C#代碼做到這一點:

System.Diagnostics.Process prProcess = new System.Diagnostics.Process(); 
prProcess.StartInfo.FileName = "c:\\A\\ApplicationToBeLaunched.exe"; 
prProcess.StartInfo.UserName = ""; 
prProcess.StartInfo.UseShellExecute = false; 
prProcess.StartInfo.WorkingDirectory = "c:\\B\\"; 
prProcess.Start(); 

但過程總是在應用程序目錄(c:\A\)執行。我也嘗試將屬性UseShellExecute設置爲true。

我在做什麼錯?任何幫助我嗎?

編輯:

一些測試後,我檢查這個問題是在啓動的應用程序。工作目錄的過程工作正常。

+0

你想實現什麼?從我能讀到的內容還不清楚。 –

+1

「在應用程序目錄中執行」是什麼意思?你的意思是沒有設置進程的工作目錄,或者是其他意外事件發生?你的'ApplicationToBeLaunched.exe'是你自己寫的東西嗎? –

+0

對於像你這樣的簡單場景,它不應該是必要的,但也許嘗試使用Fuslogvw.exe(Assembly Binding Log Viewer),http://msdn.microsoft.com/en-us/library/e74a18c4%28v = vs.110%29.aspx – RenniePet

回答

0

我做了一個小測試,在Main方法中創建了一個小的程序與此ObjectTest.exe

Console.WriteLine(Directory.GetCurrentDirectory()); 

並輸出結果:

c:\temp\ 

所以我想你的程序有一些其他問題,而不是與WorkingDirectory的問題。

+1

謝謝,我檢查過這個工作正常。存在新流程啓動的應用程序中的另一個問題。 – user3656199

0

我不知道爲什麼WorkingDirectory不起作用,但過去我自己也遇到過這種情況。

嘗試開始新進程之前改變當前的工作目錄:

 System.Diagnostics.Process prProcess = new System.Diagnostics.Process(); 
     prProcess.StartInfo.FileName = @"C:\src\Test\ObjectTest\ObjectTest\bin\Release\ObjectTest.exe"; 
     prProcess.StartInfo.UserName = ""; 
     prProcess.StartInfo.UseShellExecute = false; 
     prProcess.StartInfo.WorkingDirectory = @"c:\temp\"; 
     prProcess.Start(); 

而且在:

Directory.SetCurrentDirectory("c:\\B\\"); 
+0

謝謝,我已檢查,工作正常。在新應用程序啓動的應用程序中存在另一個問題 – user3656199