LoginSignup
0
1

CreateProcessによるファイル出力先の引継ぎと対処法

Posted at

経緯

とあるexe(Called.exe:C#)でJsonを生成している。そのexeは他のexe(Called.exe:C#)から実行される。
以下フローチャートだと、Called.exe:C# ではなく、Call.exe:C++ のディレクトリにJsonファイルが生成される。
(相対パスで生成)

Json生成までのフローチャート。

原因

CreateProcessで実行されたプロセスは、引数によって実行元プロセスの作業ディレクトリを引き継ぐため。
lpCurrentDirectoryがNULLだと、作業ディレクトリを引き継いじゃいます。

対処法

今回はクラスライブラリでJSONを生成するため、dllをロードしてるCall.exe:C# のディレクトリに生成したい。
方法はいくつかありそうだが、AppDomain.CurrentDomain.BaseDirectoryを使用

string fileName;
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,fileName);

他の方法を使用する状況に直面したら追記するよ。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1