レジストリのバックアップ

2001/01/06
Q:(一郎兄さん)
 のぶさん、万が一のためにレジストリバックアップを取っておきたいのだけど。どのファイルをどうやってバックアップすればいいんだろうか?

A:(延さん)
 そうですね。レジストリのバックアップは重要です。レジストリというのは2つのファイルsystem.datuser.datに格納されています。WindowsMEではclasses.datというファイルもあります。つまりこの2つ、または3つのファイルをバックアップすればいい訳ですが、その方法はWindows95Windows98/MEでは全然違います。まずWindows95から説明しましょう。

 これらの場合、上記レジストリデータのほかに、これらファイルのバックアップである「system.da0」「user.da0」というファイルも一緒にバックアップする必要があります。

「system.da*」の方は、Windowsフォルダの下にあります。「user.da*」ユーザ別の設定をしていない時は同様に、Windowsフォルダの下にありますが、ユーザ別の設定をしている場合は「Windowsフォルダ\Profile\ユーザ名」というフォルダの下にあります。

 これらをフロッピーやハードディスクのどこか決まった場所にコピーしておけばいいのですが、ちょっと問題があります。これらのファイルは隠しファイルおよびシステムファイルになっています。Windowsではエクスプローラでこれらのファイルでも設定次第で簡単に見れますが、MS-DOSなどでは簡単に見れません。レジストリの復元はWindowsが立ち上がらない時などに行いたい場合が多いですから、MS-DOSでも簡単に見れるような状態にしておいた方がいいです。また読み取り専用ファイルにもなっているので、これもはずします。

 コピーした後、そのファイルの隠し属性などを取りましょう。コマンドプロンプトで以下の操作を行います。

[バックアップファイルの各種属性の削除]
C:\> attrib -S -H -R c:\backup\system.dat


 ATTRIBコマンドはファイルの属性を変更するコマンドで、「-S」(システム属性削除)、「-H」(隠し属性削除)、「-R」(読み取り専用属性削除)オプションを使って、これらの属性を削除します。

 復元は起動ディスクで立ち上げたり、Command Prompt Onlyで立ち上げて、COPYコマンドで既存のデータに上書きして下さい。

Q:(貴子)
「Command Prompt Only」って何?

A:(延さん)
 Windowsで立ち上げるMS-DOSのこと。変な言い方だけど、まあ普通のMS-DOSだと思ってもらっていいよ。実際には、起動ロゴが出る前から「F8」キーを押していると、起動メニューというのが表示されるのけど、そのメニューの中にあります。

[Windows95 起動メニュー]
Microsoft Windows95 Startup Menu
--------------------------------

  1. Normal
  2. Logged (\BOOTLOG.TXT)
  3. Safe mode
  4. Safe mode with network support
  5. Step-by-step configration
  6. Command prompt only
  7. Safe mode command prompt only
  8. Previous version of MS-DOS

Enter a chioce: 6

 また「Shift+F5」を押していれば、起動メニューも出ず、そのまま「Command Prompt Only」で立ち上がります。

 書き換えようとするsystem.datなどの属性も復元作業の妨げになるものは取ります。ただし作業後は元に戻します。

[バックアップの復元]
C:\> attrib -S -H -R c:\windows\system.dat

C:\> copy c:\backup\system.dat c:\windows\system.dat

c:\windows\system.dat を上書きしますか (Yes/No/All)?y
     1 個のファイルをコピーしました.

C:\> attrib +S +H +R c:\windows\system.dat

 これをsystem.dat、system.da0、user.dat、user.da0の4個のファイルに対して行い、Windowsを起動します。めでたく新しいレジストリで起動するはずです。

 


 次にWindows98、及びWindowsMEの場合を説明します。Windowsも98になってやっとまともなレジストリをバックアップし復元する機能をシステムが用意しました。レジストリチェッカーと呼ばれるscanregw.exescanreg.exeという2つのプログラムですが、前者はWindows上で動作するもので、後者はDOS上で動くプログラムです。Windows98ではDOS上で動くscanregの方が機能が多いのですが、Windows上でバックアップするならscanregwの方がいいでしょう。WindowsMEでは両者の機能的な違いはありません。

 そもそもこれらのプログラムは名前が示すようにレジストリをスキャンしてチェックするものなのですが、もしチェックを行って問題がない場合は、レジストリを自動的にバックアップをするようになっています。

 もっともこのプログラムは、Windowsの起動時に自動的に実行されますから、特に改めて手動で実行する必要はないかもしれません。ただし自動バックアップは1日1回です。つまり1日に何度もWindowsを起動しても、レジストリのチェックは行われるが、バックアップはその日の最初の起動時だけです。

 手動でレジストリチェッカーを起動する場合は「スタートメニュー」->「ファイル名を指定して実行(R)...」からscanregwとして実行します。

[レジストリチェッカーの起動]

 すると次のような画面がでて、レジストリのスキャンをします。

[レジストリスキャン中ダイアログ]

 そしてスキャンが終わると、次のような画面が出ます。

[レジストリスキャン結果ダイアログ]

 当然既にWindowsが起動されている訳ですから、この日のバックアップはとってあるはずです。そのため上記のようなメッセージがでますが、もう一度バックアップをとりたいのであれば、「はい」を押します。すると次のような場面が出ます。

[レジストリバックアップ中ダイアログ]

[レジストリバックアップ完了ダイアログ]

 以上でバックアップは完了です。

 「自動」の場合も「手動」の場合も、バックアップはWindowsフォルダ\SysbckupというフォルダにRB000.CABという圧縮されたキャビネットファイルに格納されます。デフォルトでは「RB000」から「RB005」の5世代(000から005だと実は6世代だが、なぜかランダムに1つ欠ける)がバックアップされます。この数はscanreg.iniというファイルで変更することもできます。これに関してはこのファイルを見ればわかると思います。またこのファイルでバックアップ先なども変更できるので、安全のため別ドライブなどを指定してもいいでしょう。

 Windows98になってレジストリバックアップ体制が変わった(整った)ため、従来のsystem.da0user.da0というバックアップファイルは無くなりました。またバックアップ対象ファイルもsystem.datとuser.datのレジストリファイルだけでなく、win.inisystem.iniもバックアップするようになっています。更に先ほどのscanreg.iniに記述すれば、他のファイルも含めることができます。これもこのファイルに説明があるので参照して下さい。

 ただ上記の方法はいずれもレジストリチェックを行い、問題がない場合にバックアップするというものでしたが、もしバックアップだけでいいのなら/backup」オプションをつけて実行しても構いません。

[レジストリチェッカーの起動(バックアップのみ)]

 この場合特に何の画面も出ませんが、バックアップはちゃんと行われています。

 さて実際非常時の復元ですが、Windows98WindowsMEで少し違います。まずWindows98ですが、DOS上で動くscanregを使います。scanregwがレジストリのチェックとバックアップしかできないのに対して、scanregは前記二つに加え、レジストリの修復復元もできます。

 そしてそのレジストリの修復と復元はWindows98の場合、Windows上では実行できません。やはり「Command Prompt Only」で行います。Windows98の場合、起動メニューの出す時に押すキーは「F8」の他「CTRL」でも構いません。ただメニューの項目が少しWIndows95の場合と違うので気をつけてください。「Shift-F5」で直接「Command Prompt Only」で立ち上げるのは95の時と同じです。

 立ち上がったら次のようなコマンドを打ちます。復元だけが目的なので、/restoreオプションを付けて実行します。

[レジストリチェッカーの実行 (DOS上、復元のみ)]
C:\> SCANREG /RESTORE

 後は画面の説明に従っていけば分かると思います。基本的にはバックアップファイルリストが日付つきで出てくるので、選択するだけです。復元が完了したら、普通に起動して下さい。復元したレジストリで起動するはずです。

 バックアップキャビネットファイルの属性に未起動起動済みがありますが、これはそのキャビネットファイルに格納されているレジストリデータが起動実績のあるものかどうかを示しています。たとえばレジストリを変更した後、手動でバックアップしたデータの場合、実際そのレジストリで起動したことがない訳ですから「未起動」属性が付きます。こうしたレジストリデータはもしかしたらちゃんと起動できないものかもしれない訳です。

 もっとも作成直後は、「未起動」でも実際起動を行ったら「起動済み」に変わるべきなのですが、一度「未起動」属性のついたキャビネットファイルは、その後実際にそのキャビネットファイルに格納されているレジストリデータで起動しても、「起動済み」に変わる訳ではないようです。結局「起動済み」属性が付くのはWindows起動の時に自動的に作成されたもの、「未起動」属性の付くものは手動でバックアップしたものという違いが実質のようですから、あまりこだわる必要はないかもしれません。

 WindowsMEの場合も、基本的にはDOS上で動くscanregを使いますが、WindowsMEにはDOSが無いので、起動ディスクで立ち上げて実行します。起動後の使い方は上記と同じです。

 ただWindowsMEでは、Windows上でもレジストリの復元が可能です。レジストリの復元はWindowsが起動もしないという非常時が多いでしょうが、必ずしもWindowsが起動すらしないという事態までは至らないでも、挙動がおかしくなったなど、Windowsが起動する場合でも、レジストリをたとえば一昨日の状態に戻したいと思う時もあるでしょう。

 また通常の起動はできないが、SafeModeなら起動する場合もあるでしょう。さらには起動ディスクを亡くしてしまった。または見つからないということもあるでしょう。その場合、とりあえずSafeModeが起動するなら、Windows上からレジストリの復元ができると便利です。

 バックアップの時と同じように、「ファイル名を指定して実行」ダイアログで、scanregw /restoreを実行します。

[レジストリチェッカー警告ダイアログ]

 上記のような警告ダイアログが出ますが、気にせず「はい」を押します。

[レジストリの復元ダイアログ]

 起動実績のある(「起動済み」になっているもの)復元したい日のレジストリを選択し、「OK」を押します。あとはWindowsを再起動します。復元は以上です。

 


目次へ