経緯
とある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);
他の方法を使用する状況に直面したら追記するよ。