SRSetRestorePoint の呼び出し
申請は、インストール、アンインストール、更新など、システムの大幅な変更を引き起こす前に復元ポイントを作成できます。
インストーラーは、インストール前に、dwEventType
に設定された RESTOREPOINTINFO
構造体 BEGIN_SYSTEM_CHANGE
のメンバーを使用してSRSetRestorePoint 関数を呼び出し、復元ポイントを作成する必要があります。 インストールが完了したことをシステムの復元に通知するには、dwEventType
に設定された END_SYSTEM_CHANGE
を使用して SRSetRestorePoint を呼び出します。
ユーザーがアプリケーションのインストールを取り消すと、インストーラーはインストールの開始時に作成した復元ポイントを削除できます。 復元ポイントの削除は省略可能であり、取り消し中にインストーラーによって意図しない変更が行われないようにすることができます。 インストーラーが復元ポイントを削除する場合は、SRRemoveRestorePoint 関数を呼び出すか、dwRestorePointType
に設定された CANCELLED_OPERATION
、dwEventType
に設定されたEND_SYSTEM_CHANGE
、SRSetRestorePoint の最初の呼び出しによって返された値に設定された llSequenceNumber
を使用して SRSetRestorePoint を呼び出すことができます。
Windows 8 以降、開発者はレジストリ キー HKLM\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore
の下に DWORD 値 SystemRestorePointCreationFrequency を作成するアプリケーションを 作成できます。 このレジストリ キーの値は、復元ポイントの作成頻度を変更できます。 既定では、このキーは存在しません。
アプリケーションが SRSetRestorePoint 関数を呼び出して復元ポイントを作成すると、キーの内容に応じて次のいずれかが発生します。
キーが存在せず (既定)、過去 24 時間以内に復元ポイントが作成された場合、Windows はこの新しい復元ポイントの作成をスキップします。 システム復元では、構造体
IISequenceNumber
のメンバーをSTATEMGRSTATUS
、その日に以前に作成した復元ポイントのシーケンス番号に設定し、そのnStatus
メンバーの値をERROR_SUCCESS
に設定します。 SRSetRestorePoint 関数が返しますTRUE
。レジストリ キーの値が 0 の場合、システムの復元では、新しい復元ポイントの作成はスキップされません。
レジストリ キーの値が整数 N の場合、システムの復元では、前の N 分間に復元ポイントが作成された場合、新しい復元ポイントの作成はスキップされます。
Windows 8 で実行されているシステムの復元では、システムの復元にのみ関連するブート ボリューム内のファイルが監視されます。 Windows 8 で実行されているシステムの復元によって作成されたブート ボリュームのスナップショットは、その後、スナップショットが以前のバージョンの Windows によって公開された場合に削除される可能性があります。 システム ボリュームは 1 つのみですが、マルチブート システムのオペレーティング システムごとに 1 つのブート ボリュームがあることに注意してください。
開発者は、HKLM\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore
レジストリ キーの下に DWORD 値 ScopeSnapshots を作成する アプリケーションを書き込みできます。 このレジストリ キーの値が 0 の場合、システムの復元では、以前のバージョンの Windows と同じ方法でブート ボリュームのスナップショットが作成されます。 この値が削除された場合、Windows 8 で実行されているシステムの復元では、システムの復元のみに関連するブート ボリューム内のファイルを監視するスナップショットの作成が再開されます。
例については、システム復元の使用を参照してください。