Microsoft Windows XP システム復元機能
Bobbie Harder
Microsoft Corporation
April 2001
注 : この記事は、Platform SDK, February 2001 Edition に収録されている情報を元に作成されています。
要約 : この記事では、Microsoft Windows XP のシステム復元機能について説明します。この機能により、問題が発生した場合に、個人のデータ ファイルを失うことなく PC を以前の状態に復元することができます。
目次
はじめに
詳細
設計の概要
自動的に作成される復元ポイント
システムおよびアプリケーション ファイルの変更監視
復元処理
復元されるものと復元されないもの
他の Windows XP 復旧機能との相互運用
システム復元機能によって監視され復元されるファイル
関連情報
はじめに
Microsoft(R) Windows(R) XP (これまで Microsoft(R) Whistler と呼ばれてきたオペレーティング システム) のシステム復元機能により、管理者は、問題が発生した場合に、個人のデータ ファイル (Word ドキュメント、ドローイング、電子メールなど) を失うことなく PC を以前の状態に復元することができます。システムの復元はシステム ファイルや一部のアプリケーション ファイルの変化を能動的に監視して、変化が起こる前のバージョンを記録または格納します。システムの復元は簡単に識別可能な復元ポイントを自動的に作成し、ユーザーがシステムを以前の状態に戻せるようにするので、ユーザーはシステムのスナップショットを作成する必要がまったくなくなります。復元ポイントは、重要なシステム イベント (アプリケーションやドライバのインストールなど) が起こったときと、定期的に (毎日) 作成されます。さらに、ユーザーはいつでも独自の復元ポイントを作成し、それに名前を付けることができます。システムの復元は、古い復元ポイントを削除して新しい復元ポイントのためのスペースを作る、自動復元ポイント スペース管理機能を持っているので、セーフティ ネットはつねに張られており、ユーザーは最近の望ましくない変更をいつでも取り消すことができます。
ユーザーは、システム障害やその他の重大な問題に遭遇したら、セーフ モードまたは通常モードでシステムの復元を使用して、以前のシステム状態に戻り、最適なシステム機能を復元することができます。システムの復元はユーザーのデータ ファイルやドキュメント ファイルを元に戻すことはないので、復元を行ってもユーザーの作業の結果、メール、さらにはブラウズの履歴やお気に入りが失われることはありません。
詳細
システムの復元は既定で有効になっており、Windows XP Professional または Personal x86 バージョンのインストールが完了した時点で実行されます。システム パーティション上に 200 MB 以上のスペースが必要です。200 MB の空きスペースがなかった場合、システムの復元は無効の状態でインストールされ、必要なディスク スペースが空いた時点で自動的に有効化されます。
この記事では、システムの復元との最適な相互運用を行えるアプリケーションを開発するために注意しなければならない点として、以下のトピックを扱います。
- 設計の概要
- システムの復元のコンポーネントとその位置
- 自動的に作成される復元ポイント
- システムおよびアプリケーション ファイルの変更監視
- 復元処理
設計の概要
システムの復元は、コアのシステム ファイルとアプリケーション ファイルのセットを監視し、これらのファイルの状態を記録し、ときには変更が加えられる前にコピーを作成します。監視対象のファイルには、除外ディレクトリ (My Documents) 以外のディレクトリにあるものと、既知のデータ ファイル拡張子 (.doc など) を持たないものが含まれます。システムの復元は復元ポイントを自動的に作成します。ユーザーによる操作は不要です。復元ポイントを作成するために、システムの復元はレジストリといくつかの動的なシステム ファイルの完全なスナップショットを作成します。監視と復元の対象となるファイル拡張子のリストについては、Platform SDK の System Restore セクションの Monitored File Extensions リストを参照してください。
システムを復元する際に、システムの復元は監視対象のファイルに加えられた変更を取り消し、選択された復元ポイントの時点でのファイルの状態に戻します。その後、現在のレジストリを、選択された復元ポイントに対応する「スナップショット」と置き換えます。さらに、一部のセキュリティ情報、動的な権利に関する情報、および認証情報が、現在のレジストリから復元されたレジストリにコピーされます。以下のセクションでは、この機能の動作を詳しく説明します。復元後に、アプリケーションに望ましい動作をさせるためには、アプリケーション開発者は以下の点に注意する必要があります。
- システムの復元が保護する主なアプリケーション バイナリは、Platform SDK の System Restore セクションの Monitored File Extensions リストの <include> の部分に含まれているものと一貫性のある拡張子を持っているか?
- ユーザーによる編集が可能なファイルや個人用のデータ ファイル (.pdf、.xls、.htm など) が、監視対象の拡張子タイプとは異なる名前になっているか? たとえば、ユーザーが個人用データ ファイルとして変更できるファイルに、ファイル拡張子.ini を付けていると、復元の結果としてユーザーの作業の結果が失われるので、プロダクトの動作に問題があると見なされる可能性があります (Platform SDK の System Restore セクションの Monitored File Extensions リストを参照)。
- 復元後にユーザーが自分の個人用データ ファイルやアプリケーションにアクセスするのを妨げるような重要な情報がレジストリに格納されているか? その場合には、ユーザーが再び料金を支払わなくても、アプリケーションの再ダウンロードや再インストールを行えるメカニズムが用意されているか? または、この情報が格納されるレジストリ キーを、レジストリの hklm->system->currentcontrolset->control->backuprestore->KeysNotToRestore の下に指定しているか? この情報がファイルにも含まれている場合には、hklm->system->currentcontrolset->control->backuprestore->filesnottobackup で、システムの復元がこれらのファイルを復元しないことを確認したか?
- 使用されるインストーラは、アプリケーションのインストール/アンインストールを行ったときに意味のある復元ポイントが作成されるように System Restore RestorePT.API を呼び出しているか? (Platform SDK の System Restore セクションの SRSetRestorePoint の項を参照)。
- バックアップ ユーティリティの場合、そのプログラムは NTFilesnottobackup で指定されているファイルをチェックし、このリストに含まれているファイルはバックアップしないようになっているか? システムの復元は最初の書き込みのみを監視するので、ファイルをバックアップする際に "open to backup" 操作を使用すれば、システムの復元の新たなオーバーヘッドは発生しません。
- バックアップ ユーティリティは、復旧がキャンセルされた、または失敗したときのためにアンドゥ機能を用意しているか? この機能がない場合には、System Restore API (14-Recovery) を呼び出すことで、復旧の直前の復元ポイントを作成し、ユーザーが望ましくない復旧やキャンセルされた復旧を元に戻せるようにすることができます (Platform SDK の System Restore セクションの SRSetRestorePoint の項を参照)。
図 1. システムの復元のコンポーネントと位置
自動的に作成される復元ポイント
復元ポイントは、ユーザーが以前のシステム状態を選べるようにするために作成されるものです。個々の復元ポイントは、選択されたシステム状態を正確に復元するために必要な情報を収集しています。これらは、システムに大きな変更が加えられる前に作成されます。これらの復元ポイントは自動的に作成されるので、ユーザーは手動での復元ポイントの作成は (敢えて行う場合を除いて) 考える必要がありません。以下のトピックでは、この機能が復元ポイントを作成するきっかけとなるトリガについて説明します。
イベントによってトリガされる復元ポイント
システムの復元は、以下のイベントの前に、復元ポイントを自動的に作成します。
アプリケーションのインストール (アプリケーションが、System Restore RestorePT.API に準拠する最新のインストーラを使用している場合)。アプリケーションがユーザーのシステムに損害を与えた場合、必要ならばアプリケーションがインストールされる前の復元ポイントを選択することで、ユーザーはアプリケーションがインストールされる前のシステム状態にロールバックすることができます。
自動更新によるインストール。Windows XP の自動更新機能により、ユーザーは Microsoft Windows(R) の重要なアップデートをこれまでよりも簡単にダウンロードすることができます。アップデートのダウンロードが終わると、ユーザーのシステムにアップデートをインストールする機会が与えられます。ユーザーがアップデートをインストールするように指定すると、システム復元機能はアップデートの実際のインストールが開始される前に、復元ポイントを作成します。ユーザーが、ファイルがダウンロードされた後、かつアップデートのインストールが行われる前の状態を復元した場合、ダウンロードされたファイルは復元操作によって削除されません。
復元操作。たとえばユーザーが復元先として間違ったシステム状態を選択してしまった場合、ユーザーはこの操作の前の復元ポイントを選択することで、復元操作を取り消すことができます。ユーザーはその後で正しい復元ポイントを選択することができます。復元操作そのものが、操作の取り消しが可能なように、復元ポイントを作成します。
**注 **復元を行えるのは管理者または所有者だけです。
Microsoft バックアップ ユーティリティによる復旧。システムの復元は、Microsoft バックアップ ユーティリティがバックアップの復旧を行う前に復元ポイントを作成します。復旧がキャンセルされたり、システムが望ましくない状態になった場合、ユーザーはこの復元ポイントを使用して、システムを復旧が開始される前の状態に戻すことができます。
署名のないドライバのインストール。署名のないデバイス ドライバのインストールは、Windows の INF インストーラによって検出されます。インストールが続行される前に復元ポイントが作成されるので、インストールがシステムに悪影響を与えた場合には、ユーザーは署名のないドライバがインストールされる直前のポイントに戻すことができます。
手動の復元ポイント。ユーザー (管理者/所有者のみ) は、いつでもオンデマンドの復元ポイントを作成し、名前を付けることができます。これは、特定のリスキーな変更の前の状態、共有しているシステムを他のユーザーに明け渡す前の状態、またはユーザーが最適と考える特定の状態に戻すための「チェック ポイント」を作成するのに便利です。
スケジュールされた復元ポイント
システムの復元は、特定のイベントの前に復元ポイントを作成するだけでなく、特定の日や時刻に復元する機能を持っています。これは、24 時間おきに復元ポイントを作成することによって行われます。既定では、システムの復元はマシンが実行されている間は毎日復元ポイントを作成します。これらの復元ポイントは、アイドル状態のとき、つまりマウス、キーボード、またはディスク I/O 活動などがないときにのみ作成されます。スケジュールされた復元ポイントは、問題が生じたときに、システムの復元ユーザー インターフェイスを通して、圧縮された保存状態で (NTFS のみ) ユーザーに提供されます。また、ユーザーは [システムの復元] ユーザー インターフェイスを使って、いつでも復元ポイントを手動で作成し、名前を付けることができます。
復元ポイントの作成と格納
復元ポイントの作成操作の際に、システムの復元はレジストリといくつかの重要な動的データ ストアのスナップショットを作成し、復元ポイント ログにエントリを作成し、レジストリとデータ ストアのコピーをアーカイブに保存します。アーカイブは、さまざまな時点でのシステム状態を表す複数の復元ポイントを収集していくことになります。これらの時点は、[システムの復元] ユーザー インターフェイスを通してユーザーに提示されます。システムの復元の復元ポイント アーカイブは、隠しシステム ディレクトリであるシステム ボリューム情報ディレクトリに存在します。このアーカイブは、NTFS のシステム ACL によって保護されています。長期的には、古い復元ポイントに関連付けられているファイル、レジストリ、およびログは先入れ先出し (FIFO) 法に従って削除されるため、システムの復元が使用するディスク スペースの量は制限され、新しい復元ポイントのための十分な記憶スペースが確保されます。
図 2. 復元ポイントの作成の動作
システムおよびアプリケーション ファイルの変更監視
特定のイベントや時刻に関連付けられた復元ポイントの収集に加えて、システムの復元は他の主なシステム ファイルやアプリケーション ファイルの変化を定期的に監視しています。システムを特定の状態に完全に復元するためには、これらのファイルの変化を追跡する必要があります。システムの復元のこの側面は、以前のファイル状態を記録し、必要ならば保存することで、ユーザーが以前のシステム状態に復元できるようにします。この変更追跡は、ユーザーの体験するパフォーマンスには影響を与えません。
変更前のファイルを追跡してコピーするために、システムの復元はカーネル レベルにある (カーネル モードの) ファイル システム フィルタ ドライバを使用します。このカーネル レベルのフィルタ ドライバはファイル システム操作を監視し、特定のファイル タイプと操作については、その操作に素早く割り込み (DELETE FILE など)、操作が完了する前に元のファイルをコピーまたは移動します。ファイルの変更はログに入力され、ファイルのコピーとログは、元のファイルが置かれているドライバまたはパーティション上のアーカイブに格納されます。変更ベースのファイル コピーは、1 回のシステム セッションまたは特定の復元ポイントについて、特定のファイルで 1 回のみ行われます。
図 3. システム フィルタ ドライバのファイル コピー操作
復元処理
コンピュータが長期にわたって使用されるにつれ、復元ポイントはユーザーによる管理や操作がなくても、アーカイブに自動的に収集されていきます。ユーザーが問題に遭遇し、システム復元機能を使うことに決めた場合には、これらのさまざまな復元ポイントが [システムの復元ウィザード] ユーザー インターフェイスを通してユーザーに提示されます。ユーザーは、データ アーカイブに格納されている任意の復元ポイントを復元することができます。
特定の復元ポイントが選択され、復元処理が開始されると、コマンドは システムの復元の変更ログにアクセスする システムの復元サービスに渡されます。これらの変更ログをもとに、システムの復元は、ユーザーが選択した特定のシステム状態を再作成する方法をインテリジェントに指示する復元マップを作成します。その後、復元マップが処理され、システムが再起動され、元のレジストリと動的データ ストアが置き換えられます。
図 4. 復元処理
復元されるものと復元されないもの
復元されるもの
- レジストリ
- プロファイル (ローカルのみ - ローミング ユーザー プロファイルは復元の影響を受けない)
- COM+ DB
- WFP.dll キャッシュ
- WMI DB
- IIS メタベース
- Platform SDK の System Restore セクションの Monitored File Extensions リストの <include> の部分にリストされている拡張子を持つファイル
復元されないもの
- DRM 設定
- SAM ハイブ (パスワードを復元しない)
- WPA 設定 (Windows 認証情報は復元されない)
- Platform SDK の System Restore セクションの Monitored File Extensions リストにリストされている特定のディレクトリ/ファイル
- Platform SDK の System Restore セクションの Monitored File Extensions リストで、<included> としてリストされていない拡張子を持つすべてのファイル
- Filesnottobackup と KeysnottoRestore の両方にリストされている項目 (hklm->system->controlset001->control->backuprestore->filesnottobackup および keysnottorestore)
- ユーザー プロファイルに格納されているユーザー作成のデータ
- リダイレクトされたフォルダの内容
他の Windows XP 復旧機能との相互運用
前回正常起動時の構成を使った起動
「前回正常起動時の構成」機能とシステム復元機能は、マシンがブートすらできなくなった場合に、最適な状態に戻すための作業を支援する機能を提供します。「前回正常起動時の構成」機能は、システムのブートが最後に成功したときのレジストリ キーのサブセットを使用してシステムをブートする機能を提供します。前回正常起動時の構成は、システムのブートに成功するたびに、最新のキーと値を保存します。システムは、ブートの試みに失敗したことを検出すると、自動的に F8 メニューから [前回正常起動時の構成] オプションを選択します。また、ユーザーは F8 ブート メニュー オプションから [前回正常起動時の構成] 機能を選択してブートを行うこともできます。[前回正常起動時の構成] を使った場合、ユーザーは一般にシステムをセーフ モードまたは通常モードでブートすることができます。セーフ モードまたは通常モードで、[前回正常起動時の構成] を使ってブートを行った後に、望ましくない変更を取り消してシステムを以前の状態に戻したい場合には、システムの復元を使用します。
システムの復元は回復コンソールからは使用できず、この高度な環境で加えられた変更を追跡もしていません。つまり、回復コンソールの中で行われたシステムの変更は、システムの復元では監視されず、復旧も行えないということです。
システムを復元する際に、システムの復元は復元操作のターゲットとなったレジストリの状態との一貫性が保たれるように、「前回正常起動時の構成」の状態を変更します。言い換えると、最新の「前回正常起動時の構成」のキーと値は、システムの復元によってスナップショットが作成されたターゲットの (または復元先の) レジストリに置き換えられます。これにより、復元されたレジストリと 「前回正常起動時の構成」の状態の値につねに一貫性が保たれます。
前回正常起動時の構成は、ブート不可能な状態になったときに使用します。いったんセーフ モードまたは通常モードでのブートに成功したら、システムの復元を使って、それ以前の最適な状態に戻すことができます。システムの復元にアクセスするためには、システムがいずれかのモードでブート可能になっている必要があります。
ドライバのロールバック
ドライバが動作しなくなったときのために、Windows XP はデバイス ドライバを以前にインストールされたバージョンに置き換えるデバイス ドライバ ロールバック機能を用意しています。ユーザーがシステムを不安定にする新しいデバイス ドライバをインストールしたとき、そのユーザーは単に以前のデバイス ドライバを再インストールして、システムを使い続けることができます。
システムの復元は、その能動的な変更監視デザインにより、新しいデバイス ドライバのインストールによって加えられた、すべての監視対象のファイルとレジストリの変更をキャプチャします。ドライバのインストールは システムの復元がキャプチャする状態全体のサブセットに過ぎず、ドライバのインストールの結果としてシステムに加えられた望ましくない変更を システムの復元で取り消すと、最後の復元ポイントが作成されてからシステムに加えられたその他の変更もすべて取り消されることに注意してください。たとえば、あるユーザーが署名のないドライバをインストールした場合、システムは自動的に復元ポイントを作成します。その後、ユーザーはデスクトップの外見とダイヤルアップ ネットワークの設定を変更します。やがてユーザーは、システムの動作がおかしくなったことに気づいたので、システムの復元を使ってデバイスがインストールされる前の時点にシステムを戻します。これでシステムはドライバがインストールされる前の時点に戻されましたが、デスクトップの外見とダイヤルアップ ネットワークの設定も元に戻ってしまいます。インストールしたデバイス ドライバでドライバ ロールバック オプションが使用できない場合、システムの復元はユーザーにとって最適な復旧オプションということになるかもしれません。しかし、ドライバ ロールバックが以前のドライバを再インストールする手段を提供しており、ユーザーがドライバのインストール後に加えた最近の変更を無効にしたくない場合には、ドライバ ロールバックを通して以前のドライバを復旧し、再インストールすると同時に、最近の変更が取り消されるのを防ぐことができるドライバ ロールバックが最適な復旧オプションということになるでしょう。
システムの復元を使用していて、署名のないドライバのインストールがシステムの望ましくない動作の原因であるように思われる場合、ユーザーはドライバがインストールされる直前に自動的に作成された復元ポイントにまでシステムを戻すことができます。デバイス ドライバに署名が付いていた場合、システムの復元は復元ポイントを作成しません。ただし、ドライバがインストールされる直前に作成された復元ポイントを復元すれば、デバイス ドライバのインストールの効果は取り消すことが可能です。この場合には、ドライバがシステムに加えた変更だけでなく、その復元ポイントが作成されてから後に加えられたすべての変更が取り消されます。
また、システムの復元は、システム上に以前のドライバを再インストールする際に、ドライバ ロールバックが使用するドライバ ロールバック .INF キャッシュも元の状態に戻します。つまり、システムの復元を使って望ましくない変更を取り消した場合、システムの復元はシステムを以前のドライバの .INF がキャッシュに保存される前の時点にまで戻すので、ドライバ ロールバックを使って古いドライバを再インストールする能力が一時的に失われる可能性があります。ドライバのインストールが問題の原因であることにかなりの確信がある場合や、インストール後にシステムに加えた変更を残したい場合には、まずドライバ ロールバックを使って、システムに対する他の変更を取り消すことなく、以前のドライバの再インストールを試みてください。ドライバ ロールバックで以前のドライバを再インストールできなかった場合には、デバイス ドライバのインストールの結果として生じた、システムの望ましくない効果を取り消すための復旧機能としては、システムの復元が最適ということになります。
システムの復元を実行したが、システムに対する他の変更を取り消すことなく、以前のドライバを再インストールしたい場合には、直前の復元を取り消した上で、ドライバ ロールバックを使って以前のドライバを再インストールしてください。
Microsoft バックアップ ユーティリティ
バックアップ ユーティリティ により、ユーザーは自分のハード ディスク上のデータのコピーを作成し、復旧することができます。ハード ディスク上のオリジナル データが誤って消去または上書きされた場合、またはハード ディスクの異常のせいでアクセス不可能になった場合、ユーザーはコピーにアクセスして、失われたまたは損傷したデータを復旧することができます。システムの復元とは異なり、バックアップ ユーティリティ はユーザーの個人用データ ファイルをバックアップし、ローカル ディスクか他のメディア上に安全なコピーを格納します。システムの復元は、ドキュメント、ドローイング、電子メールなどのユーザーの個人用データ ファイルの変更を監視せず、復旧も行いません。システムの復元の復元ポイントに含まれているシステム データは、一定の期間しか復元可能ではありませんが、バックアップ ユーティリティ が作成したバックアップはいつでも復旧することができます。
Windows バックアップ ユーティリティ は、復旧を開始する前に、システムの復元を呼び出して復元ポイントを作成します。十分なディスク スペースが存在し、復旧が失敗するか、不満足な結果に終わった場合、たいていは システムの復元を使って復旧の結果から生じた変更を取り消すことができます。復旧された個人用データ ファイルが システムの復元によって復元または削除されることはありません。
自動システム回復
自動システム回復 (Automated System Recovery; ASR) は、従来のバックアップ/復元アプリケーションを拡張し、重大なシステム障害やハードウェア障害が起こった場合に備えて、Windows XP の運用状態を保存し、復旧するためのフレームワークを提供します。Windows XP AS(R) はターゲット システムを 2 段階の処理で復旧します。最初のブート復旧プロセスと呼ばれるステップでは、オリジナルの配布メディアを使って、ターゲット システム上に Windows XP の新しいコピーを一時的にインストールする必要があります。OS 復元プロセスと呼ばれる第 2 のステップは、バックアップ/復元アプリケーションを使って、以前に保存された Windows XP インストレーションのファイルを復元します (これにより、ブート復旧プロセスによってインストールされた一部のファイルが削除され、上書きされます)。システム障害が起こった場合には、ASR を使ってシステムを再起動した後に、以前に保存された Windows XP インストレーションのバックアップ コピーを使って復旧を開始することができます。
システムの復元はシステム ファイルに加えられた有害な変更を取り消すのに便利ですが、システムの復元でこれらの変更を復元するためには、システムがセーフ モードか通常モードでブート可能でなくてはなりません。カタストロフィックな障害が起こった場合には、ASR と従来のバックアップ/復旧アプリケーションにより、オリジナルのメディアを使ってシステムをブートし、以前にバックアップした Windows XP インストレーションを復旧することができます。システムの復旧が完了すると、以前のシステムの復元の復元ポイントと、復旧されたインストレーションに関連付けられていた復元ポイントは使用不可能になります。ASR を介して完全に復旧されたシステムは、オペレーティング システムのアップグレードや再インストールの場合と同様に、システムの復元の監視と復元ポイントの作成の機能を再起動します。
システム復元機能によって監視され復元されるファイル
システムの復元は、システム ファイルとアプリケーション ファイルのコアのセットを、包摂的なモデルを使って監視し、システムに変更が加えられる前のこれらのファイルの状態をアーカイブに記録します。システムの復元で指定されている監視対象のファイルについては、Platform SDK の System Restore セクションの Monitored File Extensions リストを参照してください。Microsoft 以外のソースによる変更はサポートされません。
関連情報
システムの復元の構成可能なパラメータとリモート インターフェイス、および RestorePT.API の詳しいドキュメンテーションについては、Microsoft Windows XP Platform SDK の System Restore Start Page を参照してください。