Поделиться через


Операции резервного копирования и восстановления реестра в VSS

Служба реестра Windows поддерживает модуль записи VSS, называемый записью реестра, которая позволяет запрашивателям создавать резервные копии системного реестра с помощью данных, хранящихся в теневой скопированном томе. Дополнительные сведения о записи реестра см. в разделе "Встроенные записи VSS".

Модуль записи реестра выполняет резервное копирование и восстановление реестра на месте. Кроме того, модуль записи реестра сообщает только системные кусты; Он не сообщает о кустах пользователей.

Windows Server 2003: средство записи реестра использует промежуточный файл репозитория (также известный как файл spit) для хранения данных реестра. Кроме того, модуль записи реестра сообщает системные кусты и пользовательские кусты.

Идентификатор записи для записи реестра — AFBAB4A2-367D-4D15-A586-71DBB18F8485.

Windows XP: нет записи реестра. Данные реестра сообщаются средством записи состояния загрузки, идентификатор записи которого F2436E37-09F5-41AF-9B2A-4CA2435DBFD5.

Примечание.

Корпорация Майкрософт не предоставляет техническую поддержку разработчика или ИТ-специалистов для реализации восстановления состояния системы в Windows (все выпуски). 

Примечание.

Следующие сведения относятся только к Windows Server 2003 и Windows XP.

 

Резервное копирование реестра с помощью VSS

Модуль записи реестра экспортирует и сохраняет активные файлы реестра в расположениях, определенных разделом HKEY_LOCAL_MACHINE\элементом управления System\CurrentControlSet\Control\hivelist.

Имена значений в этой записи реестра определяют сохраненный куст реестра, а данные значения предоставляют файл, содержащий файл (файл hive). Файлы hive указываются в следующем формате: \Device\HarddiskVolumeX\pathname.\

Например, в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\hivelist может появиться файл \REGISTRY\MACHINE\SOFTWARE = \Device\HarddiskVolume1\Windows\System32\config\SOFTWARE.

Модуль записи реестра гарантирует, что файлы hive сохраняются на диске до теневой копии.

При резервном копировании кустов реестра запрашивающий объект заменит \Device\HarddiskVolumeX строкой объекта устройства теневой копии тома.

Примечание.

Путь \Device\HarddiskVolumeX можно преобразовать в эквивалентный путь Win32 с помощью функции QueryDosDevice. Дополнительные сведения см. в разделе "Получение имени файла из дескриптора файла" или отображения имен пути тома.

 

Восстановление реестра с помощью API-интерфейсов Win32, отличных от VSS

Примечание.

Восстановление реестра не поддерживается в Windows Server 2016 и более поздних версиях.

Для восстановления в сети (безопасного режима или полной операционной системы) необходимо сохранить подразделы в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations.

Функции MoveFileEx и MoveFileTransacted используют этот раздел реестра для хранения сведений о файлах, переименованных с помощью значения MOVEFILE_DELAY_UNTIL_REBOOT в параметре dwFlags .

Чтобы сохранить содержимое раздела реестра PendingFileRenameOperations, приложение резервного копирования должно вызвать функцию RegLoadKey, чтобы подключить файл реестра для восстановления к активному реестру. Затем приложение резервного копирования может использовать различные функции реестра для копирования требуемых ключей и значений в загруженный куст. После завершения копирования необходимо вызвать функции RegFlushKey и RegUnloadKey.

Для автономного восстановления (среда восстановления Windows или среда предустановки Windows) не требуется учитывать раздел реестра PendingFileRenameOperations .

Восстановление реестра с помощью API-интерфейсов Win32, отличных от VSS, в Windows Server 2003

Примечание.

Приведенные ниже сведения относятся только к операциям восстановления, связанным с аварийным восстановлением (также известным как восстановление без операционной системы), которые выполняются в Windows Server 2003.

 

При восстановлении реестра приложение резервного копирования должно переместить некоторые вложенные разделы из текущего реестра в реестр, который требуется восстановить.

Для этого приложение резервного копирования может вызвать RegLoadKey , чтобы подключить файл реестра, который будет восстановлен в текущем активном реестре. Затем он может использовать различные функции реестра для копирования требуемых ключей и значений в загруженный куст. После завершения копирования вызывается RegFlushKey и RegUnloadKey .

Существует раздел реестра, указывающий на приложение восстановления (запрашивающий) разделы реестра в разделе HKEY_LOCAL_MACHINE\SYSTEM , которые не должны быть перезаписаны во время восстановления:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\BackupRestore\KeysNotToRestore

Часть процесса восстановления состояния системы включает восстановление ранее резервного реестра.

При восстановлении HKEY_LOCAL_MACHINE\SYSTEM hive необходимо соблюдать особые требования, так как при установке временной версии операционной системы Windows будут установлены ключи в вновь установленной системе hive, значения которых должны выжить в операции восстановления.

Например, если в системе замены есть сетевая карта, отличная от исходной системы, восстановление исходных ключей для предыдущей карты приведет к непредсказуемым результатам. Это связано с тем, что служба самонастраивающийся обнаружила и разместила соответствующие записи реестра служб и драйверов в реестр. Эти значения должны быть сохранены для правильной загрузки после восстановления системы.

В этом разделе описывается, как приложения резервного копирования могут обнаруживать, какие ключи и файлы следует сохранять при выполнении восстановления HKEY_LOCAL_MACHINE\SYSTEM hive. В некоторых случаях это приведет к программному копированию ключей из вновь установленного куста установки в куст, который будет восстановлен. В других случаях убедитесь, что разделы реестра продукта не заменяются так же просто, как указание таких ключей в ФАЙЛЕ конфигурации INF продукта.

Ключи (и ключевые данные), которые необходимо сохранить, перечисляются в HKEY_LOCAL_MACHINE\SYSTEM hive под

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore\KeysNotToRestore

ключ в виде наборов строк REG_MULTI_SZ (называемых ключевыми строками в этом документе).

Приложение резервного копирования (запрашивающий) должно проверять значения этих разделов в активном реестре и вновь восстановленном реестре, так как любое приложение или служба может добавлять значения в любое время.

Как строки ключей интерпретируются приложениями резервного копирования, определяются их символом терминала:

  1. Строки ключей, завершаемые обратной косой чертой ('\'), интерпретируются как вложенные ключи. При обнаружении такой подстроки приложение резервного копирования должно сохранять все данные и все подчиненные ключи.

    Например, ниже указывается, что все подчиненные ключи и данные должны сохраняться во время операции восстановления:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dmio\boot info\

    Для этого этот ключ и все подчиненные ключи и данные должны быть скопированы из существующего реестра (т. е. созданный установкой Windows) в вновь восстановленный реестр. Это называется операцией замены ключа. Эта операция заменяет соответствующий раздел в восстановленном реестре.

  2. Ключевые строки, символ завершения которых является звездочкой ('*)), указывает, что все вложенные ключи должны быть объединены. Например, строка ключа:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\*

    указывает, что раздел служб в существующем реестре (например, созданные установкой Windows) должен быть объединен в восстановленный реестр. Это называется операцией слияния ключей, и если подраздел существует как в существующем hive, так и в восстановленном кусте, ключ в восстановленном каталоге сохраняется со следующими исключениями:

    • Если вложенный ключ в существующем hive содержит значение с именем start, а вложенный ключ в восстановленном не выполняется.
    • Если подраздел в существующем и восстановленном кусте содержит значение с именем start, а его числовое значение в существующем кусте меньше.

    Значение start в реестре указывает, когда служба или драйвер запустится и может иметь числовое значение от 0 до 4. Чем ниже значение, тем быстрее в процессе загрузки служба начнется.

    Если этот ключ существует как в существующем, так и в восстановленном каталоге, необходимо проверить значение начального ключа в каждом кусте. Если значение в существующем hive меньше значения в восстановленном каталоге, необходимо сохранить меньшее значение.

    Еще раз этот ключ используется для определения того, должна ли служба или драйвер запускаться во время загрузки в системное время, вручную, автоматически или отключается. Меньшее значение представляет более раннее время начала. Более раннее время начала необходимо применить к новому реестру, чтобы убедиться, что служба или драйверы запущены правильно при следующей загрузке.

  3. Строки ключей, символ завершения которых не является обратной косой чертой или звездочкой, интерпретируются как значения реестра, которые следует сохранить.

    Например, строка ключа:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations

    Механизм, с помощью которого ключи можно сохранить программным способом, включает API реестра Win32. Например, один алгоритм перечисляется ниже:

    1. Восстановите файл hive системы резервного копирования в файл. В этом примере имя должно быть System.reg.

    2. Используйте RegLoadKey для загрузки System.reg в HKEY_LOCAL_MACHINE с временным именем. Например, одно из таких имен может быть

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

    3. Перечисляйте значения в подразделе KeysNotToRestore из обоих копий реестра и создайте супермножество списков. Копирование каждого такого ключа из существующего

      HKEY_LOCAL_MACHINE\SYSTEM

      ключ в

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

      ключ в соответствии с семантикой, описанной выше.

    4. После завершения использования точек входа RegFlushKey и RegUnloadKey для сохранения

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

      вернитесь к System.reg.

    5. Наконец, используйте RegReplaceKey , чтобы указать, что System.reg — заменить

      HKEY_LOCAL_MACHINE\SYSTEM

      Hive file, SYSTEM.