在 Windows Server 2003 R2 和 Windows Server 2003 SP1 中备份和还原系统状态

注意

本主题仅适用于 Windows Server 2003 R2 和 Windows Server 2003 Service Pack 1 (SP1)。 有关其他操作系统版本的信息,请参阅备份和还原系统状态

 

注意

Microsoft 不为在 Windows(所有版本)上实施在线系统状态还原提供开发人员或 IT 专业技术支持。

执行 VSS 备份或还原时,Windows 系统状态定义为多个关键操作系统元素及其文件的集合。 备份和还原操作应始终将这些元素视为一个单元。

在 Windows Server 2003 R2 和 Windows Server 2003 SP1 中,没有旨在将这些对象视为一体的 Windows API,因此建议请求者有自己的系统状态对象,以便他们可以以一致的方式处理这些组件。

由于 VSS 在系统文件保护 (WFP) 保护系统状态文件免受损坏的 Windows 版本上运行,因此需要执行特殊步骤来备份和还原系统状态。

系统状态包括以下各项:

  • 所有受 WFP 保护的文件、引导文件(包括 ntldr、ntdetect)和性能计数器配置
  • Active Directory (ADSI)(在作为域控制器的系统上)
  • 由文件复制服务 (FRS)(在作为域控制器的系统上)复制的系统卷文件夹 (SYSVOL)
  • 证书服务器(在提供证书颁发机构的系统上)
  • 群集数据库(在作为 Windows 群集节点的系统上)
  • 注册表服务
  • COM+ 类注册数据库

可以按任意顺序备份系统状态。

但是,系统状态还原应首先替换引导文件,并将注册表的系统节(配置单元)提交为过程中的最后一步,并可能按以下顺序进行:

  1. 还原启动文件。
  2. COM+ 类注册数据库
  3. 还原 SYSVOL、证书服务器和群集数据库(如果需要)。
  4. 还原 Active Directory(如果需要)。
  5. 还原注册表。

某些系统服务(如证书颁发机构)具有传统的 VSS 编写器,并采用 VSS 备份和还原算法。 其他项(如注册表)需要进行自定义备份或还原操作;有关详细信息,请参阅自定义备份和还原

引导和系统文件的 VSS 备份和还原

引导和系统文件应仅作为单个实体进行备份和还原。

请求程序可以安全地使用这些文件的卷影复制版本,并且应确保系统卷和引导设备已进行卷影复制

系统和引导文件包括:

  • 核心引导文件:
    NtLdr.exe
    Boot.ini
    NtDetect.com
    NtBootDD.sys(如果存在)
  • 在备份 WFP 文件之前,必须备份 WFP 服务目录文件,并且该文件位于:
    %SystemRoot%\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
  • 系统文件保护功能保护并由 SfcGetNextProtectedFile 枚举的所有文件(请参阅 WFP 受保护文件的 VSS 还原操作)
  • 性能计数器配置文件:
    %SystemRoot%\System32\Perf?00?.dat
    %SystemRoot%\System32\Perf?00?.bak
  • 如果存在,则应将 Internet Information Server (IIS) 元数据库文件包含在备份和还原操作中,因为它包含由 Microsoft Exchange 和其他网络应用程序使用的状态。 可以在以下位置找到该文件:
    %SystemRoot%\System32\Inetsrv\Metabase.bin
  • 如果备份了 IIS 元数据库文件,则启用应用程序以读取某些加密条目的密钥应还原为系统状态的一部分。 这些文件可以在以下位置找到:
    %SystemRoot%\System32\Microsoft\Protect\*
    %AllUsersProfile%\Microsoft\Crypto\RSA\MachineKeys\*
  • 备份引导和系统文件时,可能需要执行以下操作来确定 DOS 引导设备:
    1. HKEY_LOCAL_MACHINE\System\Setup\SystemPartition 下查找系统分区。
    2. 将系统根环境变量 (%SystemRoot%) 传递给装入管理器以获取 NT 设备名称。

WFP 受保护文件的 VSS 还原操作

WFP 服务旨在防止意外或零碎地替换系统文件。 因此,需要采取特殊步骤来还原 WFP 数据。

这意味着,WFP 编写器应在定义其编写器元数据文档时指定 VSS_RME_RESTORE_AT_REBOOT 还原方法。 如果请求程序确定 WFP 编写器未能指定此还原方法,则表明出现编写器错误。

请求程序应实现配合使用 Win32 函数 MoveFileExMOVEFILE_DELAY_UNTIL_REBOOT 参数来替换系统文件的 VSS_RME_RESTORE_AT_REBOOT 还原方法。 直到系统重启后,还原的文件才会复制到实际系统文件目录中。 仅当以下 REG_WORD 注册表项的值设置为 1 时,才会覆盖受保护的系统文件:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\AllowProtectedRenames = 1

必须在任何启动之前设置此值,其中要通过 MoveFileEx 替换受保护的文件,并在重新启动后将其删除。

还应通过引导卷备份和还原功能来备份或还原系统 dllcache 目录,并通过检查 REG_EXPAND_SZ 注册表项来定位此目录:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\SfcDllCache

                  Data type

                  REG\_EXPAND\_SZ

通过使用命令提示符中的系统文件检查器 (SFC) 重新生成了系统 dllcache 目录的内容:

  • /SCANONCE 选项在下一次系统引导时会扫描所有受保护的文件。
  • /SCANNOW 选项会立即扫描所有受保护的文件。

将扫描所有受保护的文件,并且将在目录和 dllcache 位置中替换任何无效的版本。

有四个文件属于 WFP 的一部分,这些文件无法使用 WFP 文件进行还原:

Ctl3dv2.dll DtcSetup.exe NtDll.dll Smss.exe

这些文件有助于还原 WFP 文件,因此存在循环依赖项。 目前,除了重新安装 Windows 之外,无法还原这些文件。