0

別の会社のexeを使用して、会社のexeに渡されるいくつかの入力ファイルで行われた計算に基づいていくつかの出力ファイルを生成するアプリケーションを作成しました... exeが機能するために、同じディレクトリでこれらの入力ファイルを探しますexeファイルの場所として。

出力ファイルについては、プログラムから exe を実行した場合と、Windows エクスプローラーで exe を実行した場合の出力先のフォルダーが異なることがわかりました。

  • Windows エクスプローラーで exe を実行すると、exe があるディレクトリと同じディレクトリに出力されます。
  • 私のプログラムが(ビジュアルスタジオからのデバッグで)実行されると、これらはデバッグフォルダーに出力されます

私のプログラムがこれらのファイルを同じディレクトリに出力する方法を知っている人はいますか、またはなぜこれが起こっているのでしょうか?

Fortran で書かれていること以外、この exe 内のコードについては何も知りません。

を使用してexeを実行していますProcess.Start(exeName).WaitForExit()

4

4 に答える 4

1

あなたはおそらくDirectory.SetCurrentDirectoty関数を探しています。

実際に外部exeプログラムを実行するに呼び出してください。出力ファイルを表示するフォルダーの完全なパスを渡すと、問題が解決する場合があります。

于 2012-12-19T15:51:47.093 に答える
1

アプリケーションを実行すると、現在のフォルダーをコンテキストとして取得する必要があるたびに、exeが実際に出力に現在のフォルダーを使用し、プログラムを実行してデバッグし、現在のフォルダーの違いが生じると思います。Directory.SetCurrentDirectory を使用して現在のフォルダーを設定し、それが役立つかどうかを確認できます

于 2012-12-19T15:53:01.550 に答える
0

作業ディレクトリを、両方のアプリがあるディレクトリに明示的に設定してみてください。

于 2012-12-19T15:52:21.253 に答える
0

C# アプリケーションの作業ディレクトリを設定せず、実行したプログラムのみを設定する場合は、Process.StartInfo.WorkingDirectoryプロパティを使用します。

例:

var process = new Process();
var startInfo = new ProcessStartInfo("myProgram.exe");
startInfo.WorkingDirectory = "myDirectory";
process.StartInfo = startInfo;
process.Start();
于 2012-12-19T15:53:57.470 に答える