2016-09-16 6 views
1

Ich habe ein Programm, das ein anderes externes Programm mit der Process.Start() - Methode mit dem vollständigen Pfad (wie "C: \ some \ folders \ here \ externprogram.exe ").C# Führen Sie ein anderes Programm ohne Kopieren .exe-Datei

Das Problem, das ich habe, ist, dass, wenn ich auf den Knopf klicke, der es ausführt, kopiert mein Programm das in den Ordner, in dem sich mein Programm befindet - und führt es dort aus (wie "D: \ MyProgram \ externprogram.exe"). Leider hängt dieses externe Programm von anderen Dingen ab, die daneben liegen, und ich möchte diese anderen Sachen auch nicht in meinen Programmordner kopieren.

Gibt es eine Möglichkeit, ein Programm zu starten, wo immer es ist, anstatt es zu kopieren?

+0

Nun, dann kopieren Sie die Datei dann nicht? Führen Sie es an dem Ort aus, an dem es sich gerade befindet? Warum ist das keine Option? –

+0

Keine gute Idee - das könnte den Programmordner durcheinander bringen - und es funktioniert, indem Sie 'WorkingDirectory' als @Berkay und @ChristophKN setzen, wie unten erklärt. – Marduka

Antwort

1

Versuchen Sie WorkingDirectory einzustellen;

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

Weitere Informationen here überprüfen, hilft

Hoffnung.

+0

Danke, das funktioniert. – Marduka

+0

Ihre Begrüßung. @Marduka – Berkay

+0

'Process' implementiert' IDisposable' deshalb ist es sinnvoll, es in 'using' zu verpacken:' using (Process pp = new Process()) { pp.StartInfo.FileName = ...} ' –

0

Gibt es eine Möglichkeit, ein Programm zu starten, wo immer es ist, anstatt es zu kopieren?

Ja

Die Process Klasse hat einen Konstruktor Parameter ProcessStartInfo genannt. Die ProcessStartInfo hat eine Eigenschaft namens WorkingDirectory. Diese Eigenschaft legt einen Wert fest, dass die Process in diesem Verzeichnis starten soll. Es werden keine Dateien in Ihr Verzeichnis kopiert.

Nutzungs

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

ist Ihr Prozess ab sofort einfach.

using(Process process = Process.Start(startInfo)) 
{ 
    // Your code while process will run. 
} 
Verwandte Themen