なんのアプリか存じませんが、設定ファイルの変更後のアプリの再起動はしてるよね?
アプリの再起動をしても設定が変更されないんなら、その設定ファイルはほかのアプリと共有してるなんてこたないですかね?
つまり他のアプリがその設定ファイルの内容を読み込んでメモリにマッピングしている状態で、設定ファイルを変更したとしましょう。その後、同じ設定ファイルを使用する、また違うアプリを起動しても、新たに起動されたアプリは HDD に設定がフラッシュされたファイルじゃなくてメモリにマッピングされてる古い設定ファイルを読みこんでるんじゃないかと、ちょっと思いました。
まぁ普通はぜんぜん違うプロセス間でそんなことしないだろうけど。でも最初に起動したアプリと後から起動したアプリの実行ファイルが同じだったりすると(メモ帳を二コ開くような場合、notepad.exe が二個できる)、そいうことも起きるかもしんないですね。ま、勝手な推測ですが。
>りんこ
アドバイスサンクス。
なるほど〜。
>なんのアプリか存じませんが、設定ファイルの変更後のアプリの再起動はしてるよね?
もちろんしている。
>アプリの再起動をしても設定が変更されないんなら、その設定ファイルはほかのアプリと共有してるなんてこたないですかね?
他のアプリとの共有はしていない。
本当にそのファイルを開いて読み込んでいるのかを調べるために、Microsoft の Process Monitor ってツールで観察してみたけど、確かに設定ファイルを開いて(CreateFile呼出)、ファイルから読み込んでいる(ReadFile呼出)ことを確認して、デバッガでも変更後の値が入ってることを確認したけど、プログラムが進むうちに、"いつのまにか"、値が変わってるんだよね。
しかも、ファイルの置き場所変えたらうまくいくという…
そうすか、、、、んじゃいつの間にか置き換わっている、仮想アドレスにマップされた設定ファイルを「write access break」してみたら?
windbg でやるならプロセスにアタッチして 「ba w 1 "設定ファイルがマップされてる仮想アドレス"」とかで適当にブレイク張って、g してヒットしたら kv コマンドでスタック表示させたら誰が(どのモジュールが)書き換えてるかわかると思うで。
でもわかったところでどないやっちゅうねん。ということになるかもしれませんがw
ていうか「デバッガでも変更後の値が入ってることを確認」ってのはどうやったん?暇なとき教えてくだされ。
windbg は使ったことないから勉強せんとといかんな〜
>ていうか「デバッガでも変更後の値が入ってることを確認」ってのはどうやったん?暇なとき教えてくだされ。
これは普通に VisualStudio でステップ実行しながら確認しただけだよ♪
いまはWindowsファイアウォールについて調査中。
Author:motonux
バイクも社会人人生も約一年の駆け出しLinuxハッカーライダー。とりあえず、ベテランライダーにも威張れるネタを作ろうと思いたち、ツーリングマップルの全ページ制覇プロジェクトを開始する。制覇の基準は、「各ブロックで、最低一つ、観光スポットに立ち寄ること」。既に半分ほどはまわったが、まだまだ旅ネタは尽きそうにない。ついでに、Linuxネタも。
愛車:ZZR400
愛機:自作PC
愛用Linux:Gentoo(デスクトップ)、PlamoLinux(ノートPC)
愛用地図:ツーリングマップル2005年4月発行版
ツーリングマップル制覇レベル
完:そのページはオレに任せろ
半:通っただけ、もしくはちょっとだけ探検した