WindowsのVirtualStoreに救われていた

『パスワードが違うかデータファイルが読み込めません。』

ID Managerを立ち上げ、パスワードを入力したら表示されたメッセージです。

一瞬、超焦りました。
保存している多数のアカウント及びパスワード情報がすべて吹っ飛ぶ危機((((;゚Д゚)))

ちなみに先に結論を言ってしまうと、色々調べた末に、この問題は無事に解決することができました。
今回の内容は、その経緯と対応を備忘録として残すものです。





◆バックアップを探せ


まずは、落ち着こう。
このID Managerとの付き合いは長い。

確かこのソフト、自身でデータファイルのバックアップを一定世代保存していく仕様だったはず。
そこから戻せば何の問題も・・・

ない?!

データファイルが入っているはずのフォルダを確認してみたが、期待するものはそこに存在していなかった。


① ID Managerのインストールフォルダ:
  C:\Program Files (x86)\idm 

② ID Managerのデータ保存フォルダ:
  C:\Program Files (x86)\idm\data 


③ データ保存フォルダにあるべきファイル:
 ・(ユーザ名).idm    ←※最新 
 ・(ユーザ名).idm.bak 
 ・(ユーザ名)_old.idm 
 ・(ユーザ名)_old2.idm 


本来は上記②のデータ保存フォルダの中に、③の通り【(ユーザ名).idm】という最新のデータファイルと、【bak】や【old/old2】の文字列を付加した名前のバックアップファイルを複数生成しているのが通常である。

なのにそこには、私が現在ID Managerでメインに使用しているユーザ名のファイルが一切なく、あるのは過去の名残りで残している非メインユーザ名のファイルだけ。

よりによって一番大事なユーザのデータだけ皆無て!

なんで??!!!



◆今さらWindows8.1にアレがないことを知る


理由は分からないが、ID Managerソフト自身のバックアップは機能できていなかった。

ないものは仕方ない。
ならば、と他にバックアップになりそうなものがないか思い巡らす。

そうだ。
以前に仕事で使っていたWindows7だと「以前のバージョン」という機能でファイルやフォルダが個別に復元ができたではないか。
えーっと、シャドウコピーってやつね。

それが使えないかとID Managerのデータフォルダのプロパティを見てみる。
以前のバージョンタブはない。

そもそもオフられているのか?と思って設定を確認。

「システムの詳細設定」→「システムの保護」→「構成」

と見てみるが・・・あれ?
なんか設定項目の文言がWin7と違う。ファイルも保護の対象とするような記述がない。

どういうことかとここでやっとネット検索をしてみる。
すると、Win8から「以前のバージョン」はなくなったとのこと。
し、知らなかった。。。

代わりに新しく「ファイル履歴」という機能が搭載されたようなのだが、デフォルトだとオフなんだそうな。


参考:
ユーザーファイルを手軽にバックアップするWindows 8の「ファイル履歴」 | マイナビニュース
【中島省吾のWindows8道場】新機能「ファイル履歴」でファイルを自動的にバックアップする | nikkei BPnet 〈日経BPネット〉


じゃあ無理じゃーん。
今回の件ではまったく期待できないじゃーん。

ちなみに私、今年頭ぐらいにVistaから8.1に移行しましたが、まだまだ8.1には不慣れな新参者同然ユーザです。いろんなものがデフォルトです。



◆ダメ元で見つけたVirtualStore


諦めきれない私は、半ばダメ元でPC上をエクスプローラでファイル検索した。
ID Managerのデータファイルを探すという意味で、検索窓にはキーワードとして「idm」と入力。

しばらく待つと、検索結果がパラパラと出てきた。

ん?何だこれ??
ファイル名からすると一見ID Managerの現ユーザのデータファイル・・・
なんだけどパスを見るとなんだか見慣れない場所にある。

でも、でも!
ファイルがあるってことは期待できそうか!?


大急ぎでエクスプローラをそのファイルの在りかへ移動。

ばばーん!
なんとそこには確かに、ID Managerの現ユーザ名のデータファイルが複数存在しており(!!)、しかもファイルの更新日時は最後に使った数日前となっていた(!!!!)。

やばい、嬉しい!!
やったぁぁぁ~


④ 検索で見つかったフォルダ:
 C:\Users\[Windowsユーザ名]\AppData\Local\VirtualStore\Program Files (x86)\idm\data 
※これを以降、VirtualStoreパスと呼ぶ。


次のステップに進むべくさらに詳しく見ていくと、最新のデータファイル【(ユーザ名).idm】はサイズが0になってしまっていた。
これはどうしようもなさそうなので捨て置くとして・・・もう1個の【(ユーザ名).idm.bak】はサイズもあるしちゃんと生きてそう!

早速、正規のID Manageデータ保存フォルダにこれをコピーし、【(ユーザ名).idm】にリネーム。
コピーやリネームの度にWindowsに何か権限がどうとか言われたけど、このときはあまり深く気にせずとにかく先を急いだ。


そしていざ、改めてID Manager起動、パスワード入力!

『パスワードが違うかデータファイルが読み込めません。』

・・・あっれぇ?
見た目普通そうだったけどこのファイルも壊れてるのか?


ガッカリ感が否めない中、何となくの思い付きで試しに、④の検索で見つかったフォルダ配下でさっきと同じ施しをしてみた。
つまり、0サイズの最新データファイルを捨ててバックアップファイルを最新に置き換える。

再度ID Manager起動、パスワード入力・・・
お。正常に開いた。

開いたよぉぉぉ~(ノД`)・゜・。!!!



◆VirtualStoreの存在意義


喜びもつかの間、ふと疑問に思った。

今の動きからすると、ID Managerは正規のインストールフォルダではなくVirtualStoreパスの方のデータファイルを見ている?

ID Managerのソフト側の設定でデータ保存場所という項目はあるが、もちろんそんなものは不必要にいじっておらずデフォルトのままだ。
なのに、なぜそれ以外の場所を参照するのか。不思議だ。

根拠が欲しくて試しにiniファイルを開いて見てみたが、関係しそうな記述はない。
レジストリで「VirtualStore」というキーワードで検索をかけてみたりもしたが、これも空振り。パスを保持している何かがあるのならひっかかるかもしれない、と思ったのだが。


モヤついたまま、今一度ID Managerの起動とパスワード入力を試そうと思い、タスクトレイから現在起動しているプロセスを終了させた。

このとき、ID Managerが何やらまたエラーを吐いた。

『ファイルの世代バックアップに失敗しました』

※これは2回吐いたエラーのうちの1個


んん?

エラーは少し詳しく書いてあって、ID Managerのデータ保存フォルダ配下のファイル名変更や削除に失敗したと言っている。

名前変更や削除に失敗って、アクセス権の問題っぽいな?
しかもこれじゃバックアップ取れなくてダメじゃん。

とか思っていたら、開きっぱだったVirtualStoreパス配下のデータファイルたちの更新日時が更新されたのが目に入った。つまり、こっちに保存されたのだ。


・・・?!
正規の場所にファイル保存や変更ができないから、代わりにVirtualStoreパスの方を使って作業している、とか?

起動時も、正規の場所に読みたいファイルがなければVirtualStoreパスの方を見に行くという動きがあるんだとしたら、色々と納得がいく。

VirtualStoreは代替えの作業場所のようなフォルダだと思った。



◆VirtualStoreとは


ここで今さらだけど、実際のところVirtualStoreって何だ?
ようやくこのタイミングで軽く調べてみると、どうやらVistaから始まったUACに関するもののようだ。てことはそこそこ古くからあったんだな!(汗)

Program Files等のセキュリティ強化された場所に対してUAC非対応のプログラムが書き込みを行おうとすると、もちろん権限不足で拒否されるわけだが、これを自動的に書き込み可能なユーザ領域にリダイレクトしデータ保存できない事象を回避してくれる。

このときに使われるユーザ領域というのが、VirtualStoreらしい。

「%LOCALAPPDATA%\VirtualStore」


この辺については以下のITmediaの記事に詳しく書いてあるが、もっと簡単なのがサクラエディタのヘルプページ。
おそらくこのソフトも同じ目にあって開発元が対応したのだろうが、その際のVirtual Storeの説明が完結で分かりやすかった。


参考:
サクッとおいしいVistaチップス 8枚め:ファイルとレジストリの仮想化を理解する - ITmedia PC USER
Virtual Store - サクラエディタ ヘルプ


まぁ、VirtualStoreについては予想通りの代替え的なものだった。
そして1つはっきり言えることは、むしろ私のID ManagerはVirtualStoreに救われていたのだ。




◆あるべき形に戻そう


色々と理解できたうえで、このままでは良くないと思った。
もちろんVirtualStoreパスのままID Managerを使い続けることはできるが、この機能があくまでOS側の救済措置であることを考えると、救済を必要としないあるべき形に戻したい。

そもそもは、UACから始まっている。

思い起こせば、前の職場でXPから7に変わったとき、UACだ何だと言って急にセキュリティが厳しくなった色んな事を不便に思ったものだ。
システム部門だった私は業務に差し支えありとしてUACを無効にして使っていた。

さらに言うと、自宅用先代PCのVistaについては当時それこそ家で時々仕事もしていたこともあって、同様の理由でUACは無効にしてしまっていた。実際鬱陶しかったし。。。


ただ、今それと同じことをするかというと、それは違う。

家のPCやNW環境なんて企業みたいに守られちゃいないから、今では昔と違ってデフォルトのセキュリティをわざわざ下げるなんてできればしたくないと強く思ってる。
何より私自身、昔と比べるとPCにも新しいIT情報にもめっきり疎くなったし、PCをガッツリ駆使させることもなくなった。

つまりセキュリティを犠牲にしてまで効率を取る理由がどこにもない。


UACを無効にせずに、もっと影響範囲が狭く少ない変更で済む回避策を・・・

その流れでID ManagerのインストールフォルダにだけUsersに変更権限を与える案を思い付いたけど、こういう局所的な権限変更ってあんまり好きじゃない。だから試しもせずに却下。

最終的に決めたのは、これ。


<VirtualStore回避方法>
ID Managerの起動に使っているショートカットに対し、プロパティの「管理者としてこのプログラムを起動する」設定をオンにする。



ちなみに右クリックで「管理者として実行」で起動するでもOK。
でもそれだと毎回そういう操作をすることを忘れそうなので、プロパティから設定に入れてやる方が確実。

こうしてID Manager自体に権限を持たせてやれば、Program Filesにだって書き込めるようになるからVirtualStoreにもいかなくなるはず。

実際に動作確認してみたところ、今までVirtualStoreのデータを見に行っていた事象も、正規フォルダにバックアップ保存できなかった事象も、すべて無事に解決した。

代わりに起動の度にWindowsからの確認画面が挟まれるようになって、若干ウザくはなったけど(笑)
ま、これもセキュリティのためのものだから、このくらいは許容範囲とするよ。

一件落着!



◆さいごに


本当に今日の今日まで、今使ってるID ManagerユーザのデータファイルがProgram Files配下になかったことになんて気付きもしなかった。

世代バックアップ失敗のエラーだって、今まで一度も見たことがないと言ったら多分嘘になる気がするけど、それほど見た気もしない。

おそらくいつもは、ID Managerのウィンドウを×(バッテン)で閉じる→タスクトレイに入る→以降は存在を気にしない→そのままWindowsシャットダウン、の流れでこの場合はエラーが表示されないんだと思う。


なんにせよ。

あくまで結果オーライだから言えることだけど、今回のことで初めてVirtualStoreのことを知ることができて、ある意味良かった。

ずっと私のID Managerを救済してくれていたのにその事実にすら気付かずにこの先何年もいたかもしれない。そうしたら、理解不足でいつかもっと困惑に陥る場面があったかもしれない。

私の知らない間に今日まで私のアカウント情報を保存し続けてくれてありがとうよ、VirtualStore!



というか、今回一番痛感したのは、
やっぱり大事なデータはバックアップ取らなくちゃね。。。

私は元SEのくせに自分のPCのこととなると、何かトラブったか必要に迫られるイベントが起きたときぐらいにしかバックアップ等のしかるべき策を講じないタチ。

えぇ。自覚しております。
とはいえ今回が良い教訓なので、今後はそういうとこ、きちんとしたいと思います。

以上。

コメント

Related Posts Plugin for WordPress, Blogger...

このブログの人気の投稿

フェリエの動作不良は故障ではなかった

風呂の蛇口の水漏れは、自力で直せる!

急に買っちゃった!ノートパソコンASUS X200MAの感想

2021年フジテレビF1中継の使用曲まとめ

IQOSキットをイトーヨーカドーでゲットした話