SRSetRestorePointA 関数 (srrestoreptapi.h)
システム復元で復元ポイントを作成できるように、一連の変更の開始と終了を指定します。
スクリプト可能な同等の方法については、「 CreateRestorePoint」を参照してください。
構文
BOOL SRSetRestorePointA(
[in] PRESTOREPOINTINFOA pRestorePtSpec,
[out] PSTATEMGRSTATUS pSMgrStatus
);
パラメーター
[in] pRestorePtSpec
復元ポイントを指定する RESTOREPOINTINFO 構造体へのポインター。
[out] pSMgrStatus
状態情報を受け取る STATEMGRSTATUS 構造体へのポインター。
戻り値
関数が成功した場合、戻り値は TRUE になります。 pSMgrStatus の llSequenceNumber メンバーは、復元ポイントのシーケンス番号を受け取ります。
関数が失敗した場合、戻り値は FALSE になります。 pSMgrStatus の nStatus メンバーは、エラー情報を受け取ります。
解説
NETWORKService、LocalService、および System が SRSetRestorePoint を使用するすべてのプロセスにコールバックできるようにするには、COM セキュリティを初期化する必要があります。 これは、 SRSetRestorePoint が正しく動作するために必要です。 CoInitializeEx と CoInitializeSecurity への COM 呼び出しの設定については、「システムの復元の使用」を参照してください。
この関数をセーフ モードで呼び出すことはできません。 システムの復元が無効になっている場合も失敗します ( 「無効にする」を参照してください)。
この関数を呼び出すと、システムの復元はレジストリとその他のシステム データベースの完全なスナップショットを受け取ります。
アプリケーションでは、読み込み時間動的リンクを使用してシステム復元関数を呼び出さないでください。 代わりに、 LoadLibrary 関数を使用して SrClient.dll を読み込み、 GetProcAddress を使用して関数を呼び出します。
RESTOREPOINTINFO 構造体の dwEventType メンバーをBEGIN_SYSTEM_CHANGEに設定して SRSetRestorePoint を呼び出して、システム変更の直前に復元ポイントを作成します。 システムへの変更が完了したら、dwEventType を END_SYSTEM_CHANGE に設定して SRSetRestorePoint を呼び出します。
ユーザーがアプリケーションのインストールを取り消した場合、インストーラーはインストールの開始時に作成した復元ポイントを削除できます。 復元ポイントの削除は省略可能であり、取り消し中にインストーラーによって行われた意図しない変更からユーザーが回復するのを防ぐことができます。 インストーラーが復元ポイントを削除する場合は、SRRemoveRestorePoint 関数を呼び出すか、dwRestorePointType を CANCELLED_OPERATION に設定して SRSetRestorePoint を呼び出し、dwEventType をEND_SYSTEM_CHANGEに設定し、llSequenceNumber を SRSetRestorePoint への最初の呼び出しによって返される値に設定できます。
SRSetRestorePoint に入れ子になった呼び出しを行う場合は注意してください。 詳細については、「 SRSetRestorePoint への入れ子になった呼び出し」を参照してください。
Windows 8:
新しいレジストリ キーを使用すると、アプリケーション開発者は復元ポイントの作成の頻度を変更できます。
アプリケーションは、システム内で既存のキーを使用しないため、このキーを使用するために作成する必要があります。 キーが存在しない場合は、既定で次のことが適用されます。 アプリケーションが SRSetRestorePoint 関数を呼び出して復元ポイントを作成した場合、過去 24 時間以内に復元ポイントが作成された場合、Windows はこの新しい復元ポイントの作成をスキップします。 システムの復元では、STATEMGRSTATUS 構造体の IISequenceNumber メンバーを、その日に前に作成した復元ポイントのシーケンス番号に設定し、nStatus メンバーの値をERROR_SUCCESSに設定します。
SRSetRestorePoint 関数は TRUE を返します。
開発者は、レジストリ キー HKLM\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore の下に DWORD 値 SystemRestorePointCreationFrequency を作成するアプリケーションを作成できます。 このレジストリ キーの値は、復元ポイントの作成頻度を変更できます。
アプリケーションが SRSetRestorePoint を呼び出して復元ポイントを作成し、レジストリ キーの値が 0 の場合、システムの復元では新しい復元ポイントの作成はスキップされません。
アプリケーションが SRSetRestorePoint を呼び出して復元ポイントを作成し、レジストリ キーの値が整数 N の場合、システムの復元では、前の N 分間に復元ポイントが作成された場合、新しい復元ポイントの作成はスキップされます。
Windows 8:
Windows 8 で実行されているシステムの復元は、システムの復元にのみ関連するブート ボリューム内のファイルを監視します。 スナップショットが以前のバージョンの Windows によって公開されている場合、Windows 8 で実行されているシステム復元によって作成されたブート ボリュームのスナップショットが削除される可能性があります。 システム ボリュームは 1 つだけですが、マルチブート システム内のオペレーティング システムごとに 1 つのブート ボリュームがあることに注意してください。
開発者は、レジストリ キー HKLM\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore の下に DWORD 値 ScopeSnapshots を作成するアプリケーションを作成できます。 このレジストリ キー値が 0 の場合、システム復元では、以前のバージョンの Windows と同じ方法でブート ボリュームのスナップショットが作成されます。 この値が削除された場合、Windows 8 で実行されているシステム復元では、システムの復元にのみ関連するブート ボリューム内のファイルを監視するスナップショットの作成が再開されます。
例
例については、「 システムの復元の使用」を参照してください。
注意
srrestoreptapi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SRSetRestorePoint を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | サポートなし |
対象プラットフォーム | Windows |
ヘッダー | srrestoreptapi.h |
[DLL] | SrClient.dll |