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


Вызов SRSetRestorePoint

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

Установщики должны создать точку восстановления перед установкой, вызвав функцию SRSetRestorePoint с dwEventType членом RESTOREPOINTINFO набора BEGIN_SYSTEM_CHANGEструктуры. Чтобы уведомить системное восстановление о завершении установки, вызовите SRSetRestorePoint с заданным dwEventType значением END_SYSTEM_CHANGE.

Если пользователь отменяет установку приложения, установщик может удалить точку восстановления, созданную при начале установки. Удаление точки восстановления является необязательным и может предотвратить восстановление пользователя от непреднамеренных изменений, внесенных установщиком во время отмены. Если установщику требуется удалить точку восстановления, она может вызвать функцию SRRemoveRestorePoint или вызвать SRSetRestorePoint с dwRestorePointType заданным значением , задать CANCELLED_OPERATIONзначение и задать значение, llSequenceNumber dwEventType END_SYSTEM_CHANGEвозвращаемое начальным вызовом SRSetRestorePoint.

Начиная с Windows 8 разработчики могут создавать приложения, создающие значение DWORD SystemRestorePointCreationFrequency в HKLM\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore разделе реестра. Значение этого раздела реестра может изменить частоту создания точки восстановления. По умолчанию этот ключ не существует.

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

  • Если ключ не существует (по умолчанию) и какие-либо точки восстановления были созданы за последние 24 часа, Windows пропускает создание этой точки восстановления. Системное восстановление задает IISequenceNumber элемент STATEMGRSTATUS структуры порядковым номером для точки восстановления, созданной ранее в день, и задает значение nStatus элемента ERROR_SUCCESS. Возвращается TRUEфункция SRSetRestorePoint.

  • Если значение раздела реестра равно 0, восстановление системы не пропускает создание новой точки восстановления.

  • Если значение раздела реестра является целым числом N, системное восстановление пропускает создание новой точки восстановления, если какие-либо точки восстановления были созданы за предыдущие N минуты.

Восстановление системы, работающее в Windows 8, отслеживает файлы в томе загрузки, которые относятся только к восстановлению системы. Моментальные снимки тома загрузки, созданного системой восстановления, запущенного в Windows 8, могут быть удалены, если моментальный снимок впоследствии предоставляется более ранней версией Windows. Обратите внимание, что хотя существует только один системный том, существует один загрузочный том для каждой операционной системы в многозагрузочной системе.

Разработчики могут создавать приложения, создающие значение DWORD ScopeSnapshots в HKLM\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore разделе реестра. Если это значение раздела реестра равно 0, восстановление системы создает моментальные снимки тома загрузки так же, как и в более ранних версиях Windows. Если это значение удалено, восстановление системы, работающее в Windows 8, возобновляет создание моментальных снимков, отслеживающих файлы в томе загрузки, которые относятся только к восстановлению системы.

Пример см. в разделе "Использование системного восстановления".