SetPointが参照する xmlファイルだとか、Apacheの httpd.confだとか、LHMeltの設定だとか、Program Filesや ProgramDataにあるファイルだけだと思いたいがプログラムとエディタが別のファイルを見ているんじゃないかと思われることがある。試しにファイルを削除してみるとファイルがないとプログラムがいうので同じファイルを読んでいることは確かめられる。ストリームを使っているのだろうか。いったんファイルをデスクトップにコピーしてから開いてみるとプログラムが読んでいた内容がエディタにも表示される。そのままエディタで編集して元の場所に移動するとエディタで編集した内容がプログラムにも反映される。
なんなんだこのわけのわからなさは。ユーザーを赤ん坊か何かだと思ってバカにしすぎじゃないか。ユーザー不在のまま小利口なことはしてくれなくて結構。
イベントビューアに UAC-FileVirtualizationというカテゴリがある。ログを眺めたところ、上で挙げたファイルは仮想ファイルだとか遅延仮想ファイルというものであるらしい。これの目的と実装が知りたい。
権限をもたないユーザー(に実行されたプログラム)が Program Filesフォルダや Windowsフォルダ、ProgramDataフォルダやレジストリの HKEY_LOCAL_MACHINEに書き込もうとすると書き込みを拒否される代わりにこっそり C:\Users\<username>\AppData\Local\VirtualStore\Program Filesや HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINEに書き込ませられてるってわけだ。
インストールされたフォルダに設定を書き込むタイプのプログラムを実行するときに、設定が書き込めなくてエラーが発生するだとか、全ユーザーが設定を共有する羽目になるだとかの問題は解決できるだろうね。
でもそんな問題は XPのときからあったわけで。個人的に使用するプログラムや iniファイルを exeと同じフォルダに保存するプログラムは、自分のプロファイルフォルダに Programsってフォルダを作ってここにインストールすることにしてましたよ。
からくりがわかれば対処もできるけど、プログラムと一緒に自分も騙されてたことに腹が立つ。
ファイルのパスをクリップボードにコピーする「パスとしてコピー(&A)」が表示される。
欲しかったのは RunAs なんだけど……。UACを切ってるせいなのか「管理者として実行(&A)...」が機能していない。UACが働いているときは勝手にパスワードを要求してくるから「管理者として実行(&A)...」を選ぶ必要なんてなかったけど、UACが無効になっていて必要とされてる今、機能しないでどうする。ナンセンス極まりなし。