Windows XPまでのアプリだと、アプリのインストールフォルダにユーザのデータを保存するやつがよくありました。でも、Windows Vista以降、ようやくUACとやらでセキュリティが強化されて、C:\Program Files\ みたいなシステムフォルダには不用意にはアクセスできなくなりました。だけどそれじゃXP時代に作られた古いアプリがアク禁食らって動かなくなります。そこで生み出されたトリックがVirtualStoreというやつです。
VirtualStoreは、ファイルシステムの仮想化の仕組みで、実際には別の場所にあるファイルをそこにあるかのように見せかけます。すると奇妙なことが起こります。アプリで見るとファイルがちゃんとそこに有るのに、エクスプローラで同じ場所を探すとファイルが無い!
最初このことに気付いたときは狐につままれたような感じがしました。ファイルがどこかに実在するのは確かなので全ドライブを検索してみました。すると全然違う場所に実体があったのです。このVirtualStore、ファイルだけでなく、レジストリに関しても機能してるらしいです。こういうトリックを導入してレガシーとの互換性を保つのが良くも悪くもマイクロソフトらしい感じがします。
見かけの場所 | 実体の場所 |
---|---|
%Program Files% 既定値: C:\Program Files\ |
%LOCALAPPDATA%\VirtualStore\Program Files 既定値: C:\Users\ |
%ProgramData% 既定値: C:\ProgramData\ |
%LOCALAPPDATA%\VirtualStore\ProgramData 既定値: C:\Users\ |
%SystemRoot% 既定値: C:\Windows\ |
%LOCALAPPDATA%\VirtualStore\ProgramData 既定値:C:\Users\ |
HKEY_LOCAL_MACHINE\SOFTWARE | HKCU\Software\Classes\VirtualStore\Machine\Software |
【参考URL】
http://tunemicky.blogspot.jp/2013/12/virtualstore.html