自分のところ(WinXP SP2)では、「タスクトレイに常駐しない」設定でエディタ画面(NormalProcess)を立ち上げたままログオフすると、.iniファイルの更新がまったく行われない現象が発生しています。
(1) CControlProcess::MainLoop()のreturn true;の直前
(2) CControlProcess::Terminate()の入り口、
(3) CProfile::WriteFile()の_tfopen呼び出し直後、
の3箇所にイベントログ出力を埋め込んで何回かログオフ時の状況を確認したところ、
・まったくイベント出力されない
・(1)だけ出力される
・(1),(2)まで出力される
の各種パターンが観測されました。
どうやら終了処理途中であってもWindowsはプロセスを強制終了させてしまい、そのタイミングも固定的ではないようです。
ひょっとすると(3)まで進んでファイル保存中でも終了してしまうというケースだってあるのかもしれません。
「タスクトレイに常駐」の場合はまだ調べてないですが、WM_ENDSESSIONからリターンした後、実際にはどんなタイミングで終了するんでしょうね。WM_ENDSESSIONでファイル保存してるからリターン直後にさっさと終了してくれるならよいけど、そのまましばらく動作した後で終了するとすれば、やっぱり(3)まで進んでしまってファイル保存中断になったりしないかな?