2016-09-16 5 views
1

Process.Start()メソッドを使用して別のexternプログラムを実行するプログラムがあります(C:\ some \ folders \ here \ externprogram.exe ")。C#.exeファイルをコピーせずに別のプログラムを実行する

私が持っている問題は、実行するボタンをクリックするたびに、自分のプログラムがそのフォルダにコピーされ、そこに(「D:\ MyProgram \ externprogram.exe」のように) )。残念なことに、このexternプログラムは、その隣にある他のものに依存しています。私は、他のものも私のプログラムフォルダにコピーしたくありません。

コピーするのではなく、プログラムを実行する方法はありますか?

+0

さて、ファイルをコピーしないでください。現在の場所で実行しますか?それはなぜオプションではないのですか? –

+0

これは良い考えではありません - これはプログラムフォルダを台無しにするかもしれません - そしてそれは 'WorkingDirectory'を以下で説明する@Berkayと@ChristophKNとして設定することによって動作します。 – Marduka

答えて

1

WorkingDirectoryを設定してください。詳しい情報についてはhereをチェック

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

ホープことができます。

+0

ありがとう、それは動作します。 – Marduka

+0

ようこそ。 @Marduka – Berkay

+0

'Process'は' IDisposable'を実装しているので、それを 'using'にラップするのが妥当です:' '(Process pp = new Process()){ pp.StartInfo.FileName = ...}' –

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. 
} 
関連する問題