問題とはこうです。
CFileNameManager::GetIniFileName に DLLSHAREDATA の初期化コードが混じっているために、初期化時以外は無視される pszProfName 引数が関数シグニチャの一部になっています。無視されるのが問題ですし、無視される引数をあちらこちらで用意して呼び出しているのも問題です。
解決策として CFileNameManager::GetIniFileName に置かれていた初期化コードを CShareData::InitShareData の適当な場所(※GetIniFileNameを初期化目的で呼び出していた部分)に移動し、それに伴う CFileNameManager::GetIniFileName 関数のシグニチャの変化に呼び出し側を対応させました。
GetIniFileName を呼び出しているひとつである util/file.cpp の GetIniDir 関数では、一時文字列変数の使用とコピーの抑制もしています。
sakura.exe.ini の不在に基づく EXEディレクトリへの sakura.ini 作成、sakura.exe.ini に基づくユーザー個別のディレクトリへの sakura.ini 作成、それぞれに対する -PROF=GGG 引数に基づく GGG/sakura.ini の作成を確認しています。いずれも正常です。
小さなパッチですし [PatchUnicode:#1115] の開発過程で見つかった障害ですので、一週間程度の間をもってコミットしたいと考えていますが、これをご覧の方はいかがお考えですか。