2015年6月23日

WindowsのVirtualStoreの仕組み


今さらと言われそうですがWindowsにVirtualStoreという仕組みが備わっていることを初めて知りました。


発端はFFFTPです。FTPログインのパスワードを忘れてしまい、別PCのFFFTPに保存してある設定ファイルを持ってこようとしたのです。FFFTPは設定をレジストリまたはiniファイルに保存するのですが、iniファイルの場合、インストールディレクトリである「C:\Program Files (x86)\ffftp」に保存されます。

しかしエクスプローラーで見てもファイルが見つかりません。最初は拡張子iniが隠されているだけだと思ったのですが「フォルダオプション」を見ると表示される設定になっています。FFFTPから見るとちゃんと保存されていることがわかります。

結局のところこれがVirtualStoreで、FFFTPは「C:\Program Files (x86)\ffftp」に書き込んでるつもりでも実際は「C:\Users\(ユーザー名)\AppData\Local\VirtualStore\Program Files (x86)\ffftp」に書き込まれているのです。

設定ファイルはレジストリに・データは「AppData」に保存するのが躾の良いアプリケーションと言うことでしょう。「C:\Program Files (x86)」はシステムが管理するフォルダなので、そこに保存しようとするような躾の悪いアプリケーションには本人が思っているのとは別のフォルダをだまして見せているということです。Windowsの掌で踊らされている構図が目に浮かびます。
自分のPCの「C:\Users\(ユーザー名)\AppData\Local\VirtualStore\Program Files (x86)」フォルダを見てみると他にもいろいろなアプリケーションのフォルダがありました。全てフリーソフトなのもさもありなんです。

この機能はWindows Vistaからあるようですが、まったく知りませんでした。一応システム的な仕事をしているのにまったく恥ずかしい限りです。実はWindowsの権限についてほとんど理解していません。普段ログインしているユーザーは「管理者」権限なのですが、アプリケーションを実行するときに「管理者として実行」しなければいけないことがあるのはなぜなのか、ということもわかっていません。

ちなみにこの機能「コントロールパネル」→「管理ツール」→「ローカル セキュリティ ポリシー」で「セキュリティの設定」→「ローカル ポリシー」→「セキュリティ オプション」→「ユーザー アカウント制御:各ユーザの場所へのファイルまたはレジストリの書き込みエラーを仮想化する」で有効/無効を切り替えられるようです。無効にしない方が良いと思いますけれど。



0 件のコメント:

コメントを投稿