読者です 読者をやめる 読者になる 読者になる

zuzuの開発日記

iMona@zuzu等の開発者であるzuzuの趣味や業務で学んだ事などを書き連ねるブログ

VistaのUACを外したらProgramFilesのファイルが消えた

メモ 技術

UAC(ユーザーアカウント制御)を有効時にProgramFilesの中身をごちゃごちゃいじくり、結局UACを外したら、その弄くったファイルがすべて消えていた。
がんばって作った某デスクトップカスタマズのスキンが消えてしまい、どうにかならないかと調べてみたらすぐに解決方法は見つかった。


C:\Program Files フォルダ配下にプログラムの実行ファイルを配置することは一般的ですが、更新を前提とする
データファイル(.ini ファイル等)を配置すべきではありません。
UAC 環境においては %PROGRAMFILES% フォルダ下のファイルへの書き込みはシステムよってトラップされ、
実際には別のフォルダ(※)下に保存されます。これは「ファイルの仮想化(Virtualization)」と呼ばれるものです。
この仮想化機能は UAC に対応していないプログラムの互換性維持のみを目的に提供されているものであり、
MS 社はこれに依存しないことを推奨しています。

また、仮想化は UAC が有効な場合にのみ実施されるため、これに依存してしまうと、UAC 有効時に仮想化を経て
保存されたデータが UAC が無効化された状況ではプログラムへ反映されないという問題を誘発します。

via: DSAS開発者の部屋:Vista で動くプログラムを書くために 〜UAC編〜

とまあそういうわけで、UACを外すと「ファイルの仮想化」がオフになるため、消えてしまうのだ。
そしてその実態がどこにあるかというと、

C:\Users\[アカウント名]\AppData\Local\VirtualStore

ここにProgramFilesがある。

というわけで、ここからコピペで戻せば復旧完了っ!

広告を非表示にする