ガジェカツ~在宅SEのガジェット活動ブログ~

在宅SEな筆者がガジェットネタやIT、プログラミングネタを書き連ねるブログ

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がある。

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