SRSetRestorePointA 函数 (srrestoreptapi.h)

指定一组更改的开始和结束,以便系统还原可以创建还原点。

有关可编写脚本的等效项,请参阅 CreateRestorePoint

语法

BOOL SRSetRestorePointA(
  [in]  PRESTOREPOINTINFOA pRestorePtSpec,
  [out] PSTATEMGRSTATUS    pSMgrStatus
);

参数

[in] pRestorePtSpec

指向 RESTOREPOINTINFO 结构的指针,该结构指定还原点。

[out] pSMgrStatus

指向接收状态信息的 STATEMGRSTATUS 结构的指针。

返回值

如果函数成功,则返回值为 TRUEpSMgrStatusllSequenceNumber 成员接收还原点的序列号。

如果函数失败,则返回值为 FALSEpSMgrStatus 的 nStatus 成员接收错误信息。

注解

必须初始化 COM 安全性,以允许 NetworkService、LocalService 和 System 回调到使用 SRSetRestorePoint 的任何进程。 这是 SRSetRestorePoint 正常运行所必需的。 有关设置 CoInitializeEx 和 CoInitializeSecurityCOM 调用的信息,请参阅使用系统还原

无法在安全模式下调用此函数。 如果系统还原已禁用, (请参阅 禁用) ,也会失败。

调用此函数时,系统还原会获取注册表和其他系统数据库的完整快照。

应用程序不应使用加载时动态链接调用系统还原函数。 请改用 LoadLibrary 函数加载 SrClient.dll,使用 GetProcAddress 调用函数。

在系统更改之前,通过将 RESTOREPOINTINFO 结构的 dwEventType 成员设置为 BEGIN_SYSTEM_CHANGE 调用 SRSetRestorePoint 来创建还原点。 完成对系统的更改后,调用将 dwEventType 设置为 END_SYSTEM_CHANGE的 SRSetRestorePoint

如果用户取消应用程序安装,安装程序可能会删除在安装开始时创建的还原点。 删除还原点是可选的,可以防止用户从安装程序在取消期间所做的意外更改中恢复。 如果安装程序要删除还原点,则可以调用 SRRemoveRestorePoint 函数,或者调用 SRSetRestorePoint ,其中 dwRestorePointType 设置为 CANCELLED_OPERATION, 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 下编写创建 DWORDSystemRestorePointCreationFrequency 的应用程序。 此注册表项的值可以更改还原点创建的频率。

如果应用程序调用 SRSetRestorePoint 来创建还原点,并且注册表项值为 0,则系统还原不会跳过创建新还原点。

如果应用程序调用 SRSetRestorePoint 来创建还原点,并且注册表项值为整数 N,则如果前 N 分钟内创建了任何还原点,则系统还原将跳过创建新的还原点。

Windows 8:

在 Windows 8 上运行的系统还原监视启动卷中仅与系统还原相关的文件。 如果 Windows 8 上运行的系统还原创建的启动卷的快照随后由早期版本的 Windows 公开,则快照可能会被删除。 请注意,尽管只有一个系统卷,但多启动系统中每个操作系统都有一个启动卷。

开发人员可以编写在注册表项 HKLM\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore 下创建 DWORDScopeSnapshots 的应用程序。 如果此注册表项值为 0,则系统还原会以与早期版本的 Windows 相同的方式创建启动卷的快照。 如果删除此值,在 Windows 8 上运行的系统还原将继续创建快照,以监视启动卷中仅与系统还原相关的文件。

示例

有关示例,请参阅 使用系统还原

注意

srrestoreptapi.h 标头将 SRSetRestorePoint 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 无受支持的版本
目标平台 Windows
标头 srrestoreptapi.h
DLL SrClient.dll

另请参阅

SRRemoveRestorePoint