2016-09-16 71 views
1

我有一個程序,運行另一個外部程序通過使用Process.Start() - 完整路徑的方法(如「C:\ some \ folders \ here \ externprogram.exe 「)。C#運行另一個程序沒有複製.exe文件

我遇到的問題是,只要我點擊運行它的按鈕,我的程序就會將它複製到文件夾中,即我的程序在 - 並在那裏運行它(如「D:\ MyProgram \ externprogram.exe」 )。不幸的是,這個extern程序依賴於旁邊的其他東西,我不想將其他東西複製到我的程序文件夾中。

有沒有什麼辦法可以運行程序而不是複製它?

+0

那麼,不要複製文件呢?在當前所在的位置執行它?爲什麼這不是一個選項? –

+0

不是一個好主意 - 這可能會搞亂程序文件夾 - 它可以通過將WorkingDirectory設置爲@Berkay和@ChristophKN來解釋。 – Marduka

回答

1

嘗試設置WorkingDirectory;

using (Process pp = new Process()) 
     { 
      pp.StartInfo.FileName = "externalAppUrl"; 
      pp.StartInfo.WorkingDirectory = "directoryNameToRun"; 
      pp.Start(); 
     } 

有關更多信息,請here

希望幫助。

+0

謝謝,這是有效的。 – Marduka

+0

歡迎您。 @Marduka – Berkay

+0

'Process'實現'IDisposable',這就是爲什麼使用(Process pp = new Process())將其封裝到'using'中是合理的原因:' –

0

有沒有什麼辦法可以運行程序而不是複製它?

Process類有一個名爲ProcessStartInfo構造函數的參數。 該ProcessStartInfo有一個屬性稱爲WorkingDirectory。此屬性設置一個值,即Process應該在此目錄中啓動。 它不會將任何文件複製到您的目錄。

使用

ProcessStartInfo startInfo = new ProcessStartInfo(PathToYourExe) 
{ 
    WorkingDirectory = "The directory from the exe." 
} 

開始你的過程是現在很容易。

using(Process process = Process.Start(startInfo)) 
{ 
    // Your code while process will run. 
} 
相關問題