Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

特定のレジストリ・キー以下を素早くバックアップする

解説をスキップして操作方法を読む

デジタルアドバンテージ 島田 広道
2005/07/23
2008/12/26更新
 
対象OS
Windows 2000
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
レジストリに間違って不正なデータを書き込むと、システムに重大な影響が及ぶ場合がある。
レジストリを変更するときには、念のため変更前の状態をバックアップしておくとよいが、レジストリ全体をバックアップするのは面倒である。
reg saveやreg restoreコマンドあるいはレジストリ・エディタのインポート/エクスポート機能を使えば、一部のレジストリ・キーの値だけをバックアップ/リストアできる。
解説

 レジストリは、Windowsシステムに関するさまざまな情報を集中管理しているデータベースである。このため設定を間違えたり、重要なデータを誤って削除したりすると、システムに致命的な障害が発生する危険性がある。レジストリ・エディタ([スタート]メニューの[ファイル名を指定して実行]で 「regedit」と入力して起動する)を利用すれば、レジストリの現在の設定内容を確認し、必要なデータを修正したり、新たなデータを追加したりできるが、むやみに操作すべきではない。

 しかしシステム管理業務では、必要に迫られてレジストリの値を変更しなければならない場合がある。このような場合は、万一に備えて変更前のレジストリの内容をバックアップしておくと安心だ。

 レジストリのバックアップにはいくつもの方法がある。例えばWindows OSの復元ポイントを利用する方法、Windows標準のバックアップ・ソフトウェア(ntbackup.exe)を利用する方法などが代表的だろう。

 しかしこれらの方法では、レジストリ全体をバックアップするため、少々大ごとだ。変更したいキーの値だけをバックアップしたいなら、reg save/reg restoreコマンドを利用するとよい。レジストリ・キーに格納されている値やデータ、サブ・キーの内容はもちろん、レジストリ・キーのACL(アクセス・コントロール・リスト:アクセス権情報)や最終更新日時なども、すべて丸ごとバックアップ/復元が可能だ。

サポート・ツールとリソース・キット(Windows TIPS)

 ただし、reg save/reg restoreコマンドを標準で利用できるのは、Windows XP以降のOS(Windows XP/Windows Server 2003/Windows Vista/Windows Server 2008)だけである。Windows 2000で利用するには、インストールCDの\SUPPORT\TOOLSフォルダにあるサポート・ツールを追加インストールする必要がある(ただし、 Windows 2000向けのregコマンドは、Windows XPやWindows Server 2003付属のコマンドとはエラー・メッセージなどが異なっている)。なお、これに近い機能を提供するコマンドとして、Windows 2000向けリソースキット・ツールのregback/regrestがあるが、こちらは既存のレジストリ・ハイブ単位でしかバックアップ/復元ができない。

 コマンドラインではなくGUIでバックアップ/復元をしたいなら、レジストリ・エディタの「キーのエクスポート/インポート」機能が利用できる。reg save/reg restoreコマンドと同じく、レジストリ・キーの全情報をバックアップ/復元可能だ。

 ただし、Windows 2000でこの機能を利用するには、regedit.exeではなくregedt32.exeを用いる必要がある。

操作方法

 レジストリ・キーのバックアップ/復元の概要を図示すると、次のようになる。これはreg save/reg restoreコマンドの例だが、レジストリ・エディタによるエクスポート/インポートでも基本は変わらない。

reg save/reg restoreコマンドを利用したレジストリ・キーの保存と復元
reg save/reg restoreコマンドを使えば、レジストリ・キーのアクセス権情報なども含めてすべてのデータを保存できる。レジストリ・エディタによるエクスポート/インポートでも同じことが可能だ。
reg saveコマンドで特定キー以下をバイナリ・ファイルに保存する。レジストリ・エディタの場合はエクスポート。
reg restoreコマンドでファイルの情報をキーに読み込む。レジストリ・エディタの場合はインポート。

レジストリ・キーのバックアップ

  特定のレジストリ・キー(サブ・キー)以下のデータをファイルに出力するには、reg saveコマンドまたはレジストリ・エディタのエクスポート機能を使う。

■reg saveコマンドの場合
  reg saveコマンドの構文は以下のとおり。

reg save <バックアップしたいサブ・キーの名前> <出力先ファイル名>

 次の例では、「HKEY_LOCAL_MACHINE\Software\MyCo\MyApp」サブ・キーの値を「AppBkUp.hiv」というファイルに出力している。

reg save HKLM\Software\MyCo\MyApp AppBkUp.hiv

 このように、トップレベル・キーの名称は、省略形式を利用できる(もちろん、正式名を指定しても問題はない)。

省略キー名 正式なキー名称
HKLM HKEY_LOCAL_MACHINE
HKCU HKEY_CURRENT_USER
HKCR HKEY_CLASSES_ROOT
HKU HKEY_USERS
HKCC HKEY_CURRENT_CONFIG
レジストリ・キーの省略形式

レジストリ・キーのパス文字列をクリップボードにコピーする(Windows TIPS)

 なお、レジストリ・キーの名称は間違えやすいので、別ウィンドウでレジストリ・エディタを開いておき、指定したいキーの名前をクリップボードにコピーし、コマンド・プロンプトへ貼り付けるのがよいだろう(関連記事参照)。

 出力先ファイル名にパスを指定しない場合には、現在のフォルダが使用される。

 コマンドを実行すると、AppBkUp.hivというバイナリ・ファイルが出力される。拡張子.hivはレジストリのハイブ(hive)を省略したものだ。.hiv以外の拡張子を使ってもよいが、マイクロソフトのドキュメントなどを見ると.hivを指定するのが一般的のようである。

■レジストリ・エディタのエクスポート機能の場合
  レジストリ・エディタの左ペインのツリーから対象のキーを右クリックして[エクスポート]を実行する(Windows 2000のregedt32.exeではキー選択後、[レジストリ]−[キーの保存]を実行)。ファイル保存ダイアログ・ボックスが表示されたら、[ファイルの種類]として「レジストリ ハイブ ファイル (*.*)」(Windows 2000のregedt32.exeでは「すべてのファイル」)を選択してファイルを保存すると、前述のreg saveの場合と同じく、バイナリ・ファイルにレジストリの内容がエクスポートされて保存される。以下の画面はいずれもWindows XPのものだが、Windows Server 2003/Windows Vista/Windows Server 2008も同様である。前述のようにWindows 2000ではregedt32.exeを利用するため、以下の画面とは異なるので注意していただきたい。

レジストリ・エディタのエクスポート機能でキーをバックアップする
この例では前述のreg saveコマンドと同じく、MyAppサブ・キーのバックアップを保存する。
保存対象のサブ・キーを右クリックする。
これを実行するとエクスポートのダイアログ・ボックスが表示される。→

サブ・キーの内容をハイブ形式でファイルに保存する
このダイアログ・ボックスで、バックアップ先のファイル名とその種類を指定して保存する。
  保存するフォルダを選択する。
  保存するファイル名を入力する。拡張子はハイブを表す.hivでよい。
  ファイルの種類として、これを選ぶ。
  このラジオ・ボタンが選択されるとともに、バックアップ対象のサブ・キーのパス名が表示されるので、間違っていないか確認する。
  これをクリックするとバックアップ・ファイルが作成される。

レジストリ・キーの復元

  保存したファイルからレジストリ・キーを復元するには、reg restoreコマンドまたはレジストリ・エディタのインポート機能を使う。

■reg restoreコマンドの場合
  reg restoreコマンドの構文は次のとおり。

reg restore <読み込みたいサブ・キーの名前> <入力元ファイル名>

 次の例では、いったん保存したサブ・キーの値を、当初とは異なる「MyAppNew」サブ・キー以下に復元している。

reg restore HKLM\Software\MyCo\MyAppNew AppBkUp.hiv

 reg restoreコマンドによる復元時には2つ注意点がある。1つは、復元先のキー(上記でいえばMyAppNewキー)が存在しないと、「エラー: 指定されたレジストリ キーまたは値が見つかりませんでした」(Windows 2000サポート・ツールでは「Error: The system was unable to find the specified registry key or value」)が発生すること。復元先のキーは自動的には作成されないので、存在しない場合にはあらかじめレジストリ・エディタで作成しておく必要がある。

 もう1つは、復元先のキーをレジストリ・エディタなどで開いていると、「Error: アクセスが拒否されました。」が発生する場合があること(Windows 2000サポート・ツールでは「Error:」のみが表示される。日本語を表示できないバグと思われる)。これを回避するには、レジストリ・エディタでまったく関係のないキーを表示しておくか、レジストリ・エディタをいったん終了する。ただし手元で試したかぎりでは、Windows 2000 SP4およびWindows XP SP2ではエラーが発生したが、Windows Server 2003 SP1ではエラーは発生しなかった。OSによって症状が変わるようだ。

■レジストリ・エディタのインポート機能の場合
  まずレジストリ・エディタの左ペインのツリーから復元先のサブ・キーを選択する。既存ではなく新たなサブ・キーへ復元するなら、この時点でそのサブ・キーを新たに作成して選択する必要がある。ここでサブ・キーの選択を誤ると、復元によって想定外のサブ・キーの内容が削除されてしまい、レジストリに深刻な障害を与えかねないので十分注意すること。

 次に[ファイル]−[インポート](Windows 2000のregedt32.exeでは[レジストリ]−[復元])を実行するとファイル・オープンのダイアログ・ボックスが表示される。[ファイルの種類]として「レジストリ ハイブ ファイル (*.*)」(Windows 2000のregedt32.exeでは「すべてのファイル」)を選択してからバックアップ・ファイルを開くと、警告メッセージが表示されるので、復元先のサブ・キーが間違っていないか再度確認してから[OK]ボタンをクリックする。

レジストリ・エディタのインポート機能でキーを復元する
この例では新たに作成したMyAppNewキーに復元する。
復元先のサブ・キーを選択する。間違えると想定外のサブ・キーの内容を削除することになるので要注意。
これを実行する。→

復元するバックアップ・ファイルを指定する
サブ・キーの内容をバックアップしたファイルAppBkUp.hivからキーの内容を復元する。
  最初にこれを選択する。
  バックアップしたファイル名を指定する。
  これをクリックすると、復元先キーに関する警告メッセージが表示される。→

復元先キーの内容が削除されることを警告するダイアログ・ボックス
この時点のMyAppNewキーに存在するデータは、復元の実行時に全て削除される。サブ・キーが間違っていないか十分確認したら、[はい]キーをクリックして復元を実行する。

 なお、上記の方法によるレジストリ・キーの復元では、既存のキーの値に情報が「書き足される」のではなく、キーの内容そのものが復元されるので、バックアップ前に存在していなかったキーや値は復元後に削除されるので注意すること。

 保存された内容を確認したければ、reg loadコマンドあるいはレジストリ・エディタのロード機能を使って、別のサブ・キーに一時的にロード(展開)するとよいだろう(確認が終了したらreg unloadコマンドあるいはレジストリ・エディタのアンロード機能で展開を解除する)。これらのコマンドや機能の使い方については、TIPS「レジストリ・ハイブをロードしてオフラインでレジストリを閲覧・編集する」を参照していただきたい。End of Article

  関連記事(Windows Server Insider)
  Windows TIPS:レジストリ・キーのデータを移行・バックアップする
  Windows TIPS:Windows 2000管理者向けツールの種類と使い分け(サポート・ツールとリソース・キットについて)

更新履歴
【2008/12/26】レジストリ・エディタによるバックアップ/復元の手順を追記しました。

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間