次の方法で共有


SRSetRestorePoint の呼び出し

申請は、インストール、アンインストール、更新など、システムの大幅な変更を引き起こす前に復元ポイントを作成できます。

インストーラーは、インストール前に、dwEventType に設定された RESTOREPOINTINFO 構造体 BEGIN_SYSTEM_CHANGE のメンバーを使用してSRSetRestorePoint 関数を呼び出し、復元ポイントを作成する必要があります。 インストールが完了したことをシステムの復元に通知するには、dwEventType に設定された END_SYSTEM_CHANGE を使用して SRSetRestorePoint を呼び出します。

ユーザーがアプリケーションのインストールを取り消すと、インストーラーはインストールの開始時に作成した復元ポイントを削除できます。 復元ポイントの削除は省略可能であり、取り消し中にインストーラーによって意図しない変更が行われないようにすることができます。 インストーラーが復元ポイントを削除する場合は、SRRemoveRestorePoint 関数を呼び出すか、dwRestorePointType に設定された CANCELLED_OPERATIONdwEventType に設定されたEND_SYSTEM_CHANGESRSetRestorePoint の最初の呼び出しによって返された値に設定された 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 で実行されているシステムの復元では、システムの復元のみに関連するブート ボリューム内のファイルを監視するスナップショットの作成が再開されます。

例については、システム復元の使用を参照してください。