Partager via


Opérations de Sauvegarde et de Restauration du Registre sous VSS

Le Service de Registre Windows prend en charge un writer VSS, appelé le writer du registre, qui permet aux demandeurs de sauvegarder un registre système à l’aide des données stockées sur un volume de capture instantanée. Pour plus d’informations sur le writer du registre, veuillez consulter la section In-Box VSS Writers.

Le writer du registre effectue des sauvegardes et des restaurations sur place du registre. De plus, le writer du registre ne signale que les ruches système ; il ne signale pas les ruches utilisateur.

Windows Server 2003 : Le writer du registre utilise un fichier de référentiel intermédiaire (également appelé fichier de segment) pour stocker les données du registre. De plus, le writer du registre signale les ruches système et les ruches utilisateur.

L’ID du writer pour le writer du registre est AFBAB4A2-367D-4D15-A586-71DBB18F8485.

Windows XP : il n’y a pas de writer du registre. Les données du registre sont signalées par le writer de l’état de démarrage, dont l’ID est F2436E37-09F5-41AF-9B2A-4CA2435DBFD5.

Remarque

Microsoft ne fournit pas de support technique pour les développeurs ou les professionnels de l’informatique pour la mise en œuvre de restaurations d’état système en ligne sur Windows (toutes versions). 

Remarque

Les informations suivantes s’appliquent uniquement à Windows Server 2003 et Windows XP.

 

Sauvegarde du Registre à l’aide de VSS

Le writer du registre exportera et sauvegardera les fichiers de registre actifs dans les emplacements définis par la clé HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\hivelist.

Les noms des valeurs sous cette entrée de registre identifient la ruche du registre à sauvegarder, et les données de la valeur fournissent le fichier contenant le fichier (le fichier de la ruche). Les fichiers de ruche sont spécifiés avec le format suivant : \Device\HarddiskVolumeX\path\filename.

Par exemple, sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\hivelist, vous pourriez voir \REGISTRY\MACHINE\SOFTWARE = \Device\HarddiskVolume1\Windows\System32\config\SOFTWARE.

Le writer du registre s’assure que les fichiers de la ruche sont sauvegardés sur le disque avant sa capture instantanée.

Lors de la sauvegarde des ruches du registre, un demandeur remplacerait \Device\HarddiskVolumeX par la chaîne de l’objet de périphérique de la capture instantanée du volume.

Remarque

Vous pouvez convertir le chemin \Device\HarddiskVolumeX en un chemin Win32 équivalent en utilisant la fonction QueryDosDevice. Pour plus d’informations, veuillez consulter la section Obtention d’un nom de fichier à partir d’un handle de fichier ou Affichage des noms de chemin d’accès au volume.

 

Restauration du Registre à l’aide des API Win32 non VSS

Remarque

La restauration du registre n’est pas prise en charge sur Windows Server 2016 et les versions ultérieures.

Pour une restauration en ligne (mode sans échec ou système d’exploitation complet), les sous-clés de la clé de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations doivent être conservées.

Les fonctions MoveFileEx et MoveFileTransacted utilisent cette clé de registre pour stocker des informations sur les fichiers qui ont été renommés en utilisant la valeur MOVEFILE_DELAY_UNTIL_REBOOT dans le paramètre dwFlags.

Pour préserver le contenu de la clé de registre PendingFileRenameOperations, votre application de sauvegarde devrait appeler la fonction RegLoadKey pour connecter le fichier de registre à restaurer au registre actif. Votre application de sauvegarde peut alors utiliser les différentes fonctions de registre pour copier les clés et valeurs souhaitées dans la ruche chargée. Une fois la copie terminée, les fonctions RegFlushKey et RegUnloadKey doivent être appelées.

Pour une restauration hors ligne (Environnement de Récupération Windows ou Windows PE), il n’est pas nécessaire de respecter la clé de registre PendingFileRenameOperations.

Restauration du Registre à l’aide des API Win32 non VSS sous Windows Server 2003

Remarque

Les informations suivantes s’appliquent uniquement aux opérations de restauration liées à la récupération d’urgence (également appelée récupération d’urgence complète) effectuées sous Windows Server 2003.

 

Lors de la restauration du registre, une application de sauvegarde doit déplacer certaines des sous-clés du registre actuel vers le registre à restaurer.

Pour ce faire, une application de sauvegarde peut appeler RegLoadKey pour connecter le fichier de registre à restaurer au registre actuellement actif. Elle peut ensuite utiliser les différentes fonctions de registre pour copier les clés et valeurs souhaitées dans la ruche chargée. Une fois la copie terminée, RegFlushKey et RegUnloadKey sont appelés.

Il existe une clé de registre qui indique à une application de restauration (demandeur) les clés de registre sous HKEY_LOCAL_MACHINE\SYSTEM qui ne doivent pas être écrasées lors de la restauration :

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\BackupRestore\KeysNotToRestore

Une partie du processus de restauration de l’état du système consiste à restaurer un registre précédemment sauvegardé.

Les applications de sauvegarde doivent faire particulièrement attention lors de la restauration de la ruche HKEY_LOCAL_MACHINE\SYSTEM car le processus d’installation d’une version temporaire du système d’exploitation Windows aura établi des clés dans la nouvelle ruche système installée dont les valeurs doivent survivre à l’opération de restauration.

Par exemple, lorsque le système de remplacement a une carte d’interface réseau différente de celle du système d’origine, la restauration des clés d’origine pour la carte précédente entraînera des résultats imprévisibles. En effet, le service Plug and Play a détecté et placé des entrées de registre de service et de pilote appropriées dans le registre. Ces valeurs doivent être conservées pour permettre un démarrage correct après la restauration du système.

Cette section décrit comment les applications de sauvegarde peuvent découvrir quelles clés et fichiers doivent être conservés lors de l’exécution d’une restauration de la ruche HKEY_LOCAL_MACHINE\SYSTEM. Dans certains cas, cela impliquera de copier programmatiquement les clés de la ruche d’installation nouvellement installée dans la ruche à restaurer. Dans d’autres cas, s’assurer que les clés de registre d’un produit ne sont pas remplacées est aussi simple que de spécifier ces clés dans le fichier de configuration INF du produit.

Les clés (et les données des clés) à conserver sont énumérées dans la ruche HKEY_LOCAL_MACHINE\SYSTEM sous la clé

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore\KeysNotToRestore

sous forme de séries de chaînes REG_MULTI_SZ (appelées chaînes de clés dans ce document).

Une application de sauvegarde (demandeur) doit examiner les valeurs de ces clés dans le registre actif et le registre nouvellement restauré car toute application ou service peut ajouter des valeurs à tout moment.

La manière dont les chaînes de clés doivent être interprétées par les applications de sauvegarde est déterminée par leur caractère terminal :

  1. Les chaînes de clés terminées par un antislash (\) sont interprétées comme des sous-clés. Lorsqu’une telle sous-chaîne est rencontrée, l’application de sauvegarde doit préserver toutes les données et toutes les clés subordonnées.

    Par exemple, ce qui suit spécifie que toutes les clés subordonnées et les données doivent être conservées lors d’une opération de restauration :

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

    À cette fin, cette clé et toutes les clés subordonnées et les données doivent être copiées du registre existant (c’est-à-dire celui créé par l’installation de Windows) dans le registre nouvellement restauré. Ceci est appelé une opération de remplacement de clé. Cette opération remplace la clé correspondante dans le registre restauré.

  2. Les chaînes de clés dont le caractère de terminaison est un astérisque (’*’) spécifient que toutes les sous-clés doivent être fusionnées. Par exemple, la chaîne de clé :

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\*

    spécifie que la clé des services dans le registre existant (par exemple, ceux créés par l’installation de Windows) doit être fusionnée dans le registre restauré. Ceci est appelé une opération de fusion de clé, et si une sous-clé existe à la fois dans la ruche existante et dans la ruche restaurée, la clé dans le répertoire restauré est conservée avec les exceptions suivantes :

    • Si la sous-clé dans la ruche existante contient une valeur nommée "start", et la sous-clé dans la ruche restaurée ne contient pas cette valeur.
    • Si la sous-clé dans la ruche existante et dans la ruche restaurée contiennent une valeur nommée « start », et que sa valeur numérique dans la ruche existante est inférieure.

    La valeur « start » dans le registre spécifie quand un service ou un pilote démarrera et peut avoir une valeur numérique de 0 à 4. Plus la valeur est basse, plus le service démarrera tôt dans le processus de démarrage.

    Si cette clé existe à la fois dans le répertoire existant et dans le répertoire restauré, vous devez examiner la valeur de la clé de démarrage dans chaque ruche. Si la valeur dans la ruche existante est inférieure à la valeur dans le répertoire restauré, la valeur inférieure doit être conservée.

    Encore une fois, cette clé est utilisée pour déterminer si un service ou un pilote doit être démarré au démarrage, au démarrage du système, manuellement, automatiquement ou être désactivé. La valeur inférieure représente un temps de démarrage plus tôt. Le temps de démarrage plus tôt doit être appliqué au nouveau registre pour s’assurer que le service ou les pilotes sont démarrés correctement au prochain démarrage.

  3. Les chaînes de clés dont le caractère de terminaison n’est ni un antislash ni un astérisque sont interprétées comme des valeurs de registre à conserver.

    Par exemple, la chaîne de clé :

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

    Le mécanisme par lequel les clés peuvent être conservées de manière programmatique implique l’API de registre Win32. Par exemple, un algorithme est énuméré ci-dessous :

    1. Restaurer le fichier de ruche système sauvegardé dans un fichier. Pour cet exemple, supposons que le nom soit System.reg.

    2. Utilisez RegLoadKey pour charger System.reg dans HKEY_LOCAL_MACHINE sous un nom temporaire. Par exemple, un tel nom pourrait être

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

    3. Énumérez les valeurs dans la sous-clé KeysNotToRestore des deux copies du registre et créez un superset des listes. Copiez chaque clé de ce type du

      HKEY_LOCAL_MACHINE\SYSTEM

      existant dans la

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

      clé selon les sémantiques décrites ci-dessus.

    4. Lorsque c’est terminé, utilisez les points d’entrée RegFlushKey & RegUnloadKey pour sauvegarder

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

      la clé dans System.reg.

    5. Enfin, utilisez RegReplaceKey pour spécifier que System.reg doit remplacer le

      HKEY_LOCAL_MACHINE\SYSTEM

      fichier de ruche, SYSTEM.