7のVirtualStoreに泣かされた宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。Files\foo\bar\hoge.txt」という位置にあるファイルを読み込んで処理するアプリケーションを開発していて、テストって事でhoge.txtを書き換えてみたのに、アプリケーションの方でhoge.txtを読み込んでみると、書き換える前の内容が返ってくるんですよ。Files\foo\bar\hoge.txt」を消してみると、「ファイルが見つかりません」ってエラーになるんですよね。見に行ってるのは確かにこのファイルで間違いないはずなのに。僕は普段秀丸エディタを使ってるんですが、秀丸エディタって、書き込み権限が無いファイルを開くと「読み込み専用」って表示されて閲覧だけの状態になるんですよね。今回のhoge.txtはそうなってないから、ちゃんと書き換えも保存もできてるんですよ。Files\foo\bar\hoge.txt」を開くと、さっき保存した時の内容になってるんで、書き込みに失敗したというわけでもない。Files\foo\bar\hoge.txt」を開くと、秀丸エディタで書き換える前の内容が返ってくる。他にも同じ現象が起こってる人がいるみたいだし。Vista以降で導入されたVirtualStoreという仕組みでした。Vista以降ではファイルに対して書き込みができない時に、「書き込めませんでした」というエラーを出す代わりに「C:\Users\ユーザ名\AppData\Local\VirtualStore」っていうフォルダの中にファイルを書き出すアプリケーションがあるみたいなんですね。今回は秀丸エディタがそうだったんですけど。Files\foo\bar\hoge.txt」を見たら、さっき書き換えたはずの内容でhoge.txtが存在していました。Files\foo\bar\hoge.txt」の内容を返すみたいなんですよ。Files\foo\bar\hoge.txt」のままであるというのがポイント。Files\foo\bar\hoge.txt」の実体の方が返される。その結果、「秀丸エディタとメモ帳でそれぞれ同じファイルを開いてるはずなのに、実際に見えてる内容が違う」という現象が起こる。最悪なことに、どうやら一回この状態に嵌ってしまうともうお手上げのようで、それ以後は秀丸ではVirtualStoreの方のファイルにしかアクセスできないんですよね。VirtualStoreを全部消してしまいたい位なんですけど、VirtualStoreを見てみると他にもいろんなファイルが存在してるので、同じようにVirtualStoreの方の内容が返ってきてるお陰で正しく動作しているという状態のアプリケーションが他にもあるんだったら、不用意にVirtualStoreを消してしまうと大変なことになりかねないので消すわけにもいかない。7を使い始める時は、無効にしとくといいような気がします。本来できないはずの事をユーザに気取らせずにやろうとするから無理が生じるのであって、システムファイルをいじれるのは管理者権限がある人だけというルールを徹底していれば、無駄な混乱はしなくて済むのです。LinuxとかBSDとか、そういうものですし。Files以下にあるファイルをわざわざユーザが書き換えなきゃいけないという仕様が今の時代にはそもそもあり得ないでしょ。技術レベルの低い無能な似非プログラマがWindowsの仕様に逆ギレとか、まったく自業自得のくせに滑稽極まりないし。プププのプー」と言っているように見える物がいくつかあったけれども、Firefoxでいえばapplication.iniにあたるような、そう頻繁に書き換える訳じゃないけど可変のパラメータを外部ファイルで定義できるようにしておくためのファイルをいじってテストしてた時に遭遇した話なので、結構イラッとしました。2019年4月25日追記。10になった今もVirtualStoreは仕組みとして存在し続けているのですが、さすがにこの時代になるとVirtualStoreのトラップに引っかかるアプリの方が時代後れでしょと言っていいような感じで、秀丸エディタも64bit版を使えばこの問題にハマらずに済むようになりました。なくて実体のほうを開けますよ。内に手書きで修正するような設定ファイルを持つアプリケーションではまりました。title期待している結果としては、こういう場面では「管理者権限がないので書き込めません。リードオンリーで開きます。」っていう風になってて欲しいんですよね。Filesに書き込み放題だったことを前提とした行儀の悪いアプリを何とかするためなので多分メッセージを出すべきとかではなさそうです。Filesに書き込み権をつけさせるの?またまたご冗談を...みたいな話なわけで一律オフにすれば良いといってしまうのは微妙かなと。これはこれで確かにはまると混乱するので悩ましいですが。理想的にはそういうアプリケーション(秀丸とか)が「私は書く場所を理解している礼儀をわきまえたアプリなのでVirtualStoreを利用しません」ってマニフェストをくっつけてくれる事なんですけどね。VirtualStoreを使わないようにすると保存ダイアログとかでは書けませんよって一応警告でますし。ちなみにタスクマネージャーで仮想化という列を表示するとどれがVirtualStoreを使うかどうかわかります(有効・無効もコンテキストメニューから切り替えられる)。VirtualStorに泣きました。11:18:54助かりました毎週あるネット生放送をデスクトップキャプチャで保存しているのですが、先日たまたまいつも使っている外付けHDDを学校に忘れて、パソコン単体でキャプチャしたことがあったんです。その時に書き出し先をC直下にしたら、録画中は正常に録画が進んでいくのに、後で見たら保存されていないことがありました。録画失敗↓orzと思っていましたが、今日SpaceMongerというソフトでCドライブを解析していたら、失敗したはずのファイルが直下とVirtualStore両方に見つかりました。こんな回りくどいことせずに、エラーメッセージ返してくれた方が嬉しかったです。同フォルダには、失敗したと思った後に行った録画テストの動画ファイルが大量に残っていました。未圧縮のaviファイルが大量に。Cドライブの容量が妙に圧迫されていると思ったらこれでした。15:01:14ふざけた仕様VirtualStoreに書き込むんならVirtualStoreから読み込んでくれればいいだけなのに。XP置き換えでメールソフトの中身をぐちゃぐちゃにされた。17:08:44こんな仕様はサンドボックス化とかいう次元の話ではない。ユーザーに「ドン引きされないための付け焼き刃」としか思えない。titleクソ、これで10日ぐらい時間をすてた。ありがとうございます。Files以下にインストールされた設定ファイルを変更・調整して使うソフトでしたので同じ目に合いました。半日悩んだところで、この記事に行き着き解決しました。ありがとうございました。13:00:26謎の状態変化c:\の直下にいつもファイル保存していて突然エクスプローラやらで閲覧もアップロードもできなくなって混乱していました。winの自動アップデートとかしてないし設定とか変更した覚えもないのになぜこんなことになったのか謎ですがこの記事のおかげでもとに戻せそうです。ありがとうございました。06:52:08Vimもでした大変助かりました。心より感謝申し上げます。Vimの設定ファイル_vimrcは初心者でも書き換え推奨される基本設定ファイルですが、この3日間度書き換えても反映されず、途方にくれておりました。EnableVirtualization」の値を1から0に書き換えることで解決しました。今のところ、誤動作するプログラムはありません。個人的感想ですが、余計なおせっかいだけならまだしも、表示されているタスクと本質的に異なる作業しておいて何も告知しないのは、迷惑極まる話です。atの末尾に2018年6月21日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。「noda」なら、「2010-07-29_virtualstore.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。