Vista 上のアプリケーションの評価をやってるけど、何か、変なんだよね。
変1
あるXML(UTF-8)ファイルがありました。これをメモ帳で開きました。色付された状態で見たいので、秀丸(6.1)で開きました。 すると、メモ帳と秀丸とでは表示される内容が違うではありませんか! 具体的には、メモ帳では表示されるファイル末尾数行が、秀丸では表示されない(もしくはその逆だったかもしれない。ちょっと記憶あやふや)。
これだけなら秀丸かメモ帳のバグだと思うとこだけど、さらに恐ろしいことが。
変2
アプリケーションの設定ファイルを "C:\\ProgramData" 以下に置きました。しかし、この設定ファイルを編集して設定を変更しても、どうしても変更がアプリケーションに反映されません。
ひょっとして、アプリケーションが違うパスにあるファイルを見ているのでは? とおもって、Microsoft のありがたい無料ツール Process Monitor で、プロセスがどのファイルを開いているかを確認してみました。すると、確かに上記で編集したファイルを開いていました。
もうこれはソースレベルでデバッグするしかないというこで、VisualStudio でデバッグしてみました。すると、確かにこのファイルを開いて、設定も読み込んでいます。変数にも変更後の値が入って"いました"。しかし、ステップ実行を続けていくと、「あれ、いつの間にか値が変わってる…」。この変数は、初期値を設定した後は値は変わらないはずです。しかし、編集後の設定ファイルのどこをどうみても記述されていない値が、いつの間にか変数に入ってしまっているのです。しかも、そのいつの間にか入っていた値というのは、設定ファイルの編集前の元の値という世にも奇妙な現象が ((((;゜Д゜)))ガクガクブルブル…
「プログラムのバグじゃねーの?」と普通は思います。
しかし、この設定ファイルの読み込みは Windows XP ではきちんと読み込めているし、XP では設定ファイルの変更もアプリケーションに反映されています。
試しに、設定ファイルを置くパスを "C:\\" 以下にしてみました。すると、設定ファイルの変更がアプリケーションに反映されました。え…
Vista の "C:\\ProgramData " や "C:\\Users" って、2000, XPとの互換性を保つために接合点とかいうのが設けられてるらしいけど、今回の挙動も「仕様」なのかな?
ホームページ
アフィリエイト レンタルサーバー FC2ブログ