Partager via


Opérations de sauvegarde et de restauration du Registre sous VSS

Le service de Registre Windows prend en charge un enregistreur VSS, appelé enregistreur de registre, qui permet aux demandeurs de sauvegarder un registre système à l’aide de données stockées sur un volume copié en ombre. Pour plus d’informations sur l’enregistreur de registre, consultez Enregistreurs VSS in-box.

L’enregistreur de registre effectue des sauvegardes et des restaurations sur place du registre. En outre, l’enregistreur de registre signale uniquement les ruches système ; il ne signale pas les ruches des utilisateurs.

Windows Server 2003 : L’enregistreur de registre utilise un fichier de dépôt intermédiaire (également appelé fichier de crachat) pour stocker les données du Registre. En outre, l’enregistreur de registre signale les ruches système et les ruches utilisateur.

L’ID de l’enregistreur de registre est AFBAB4A2-367D-4D15-A586-71DBB18F8485.

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

Notes

Microsoft ne fournit pas de support technique pour les développeurs ou les professionnels de l’informatique pour implémenter des restaurations d’état système en ligne sur Windows (toutes les versions). Pour plus d’informations sur l’utilisation des API et des procédures fournies par Microsoft pour implémenter des restaurations d’état du système en ligne, consultez les ressources de la communauté disponibles dans msdn Community Center.

 

Notes

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

 

Sauvegarde du Registre à l’aide de VSS

L’enregistreur de Registre exporte et enregistre les fichiers de Registre actifs dans les emplacements définis par la clé HKEY_LOCAL_MACHINE\hivelistdu contrôle\CurrentControlSet\du système\.

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

Par exemple, sous HKEY_LOCAL_MACHINE\hivelist ducontrôle\CurrentControlSet\du système\, vous pouvez voir \REGISTRY\MACHINE\SOFTWARE = \Device\HarddiskVolume1\Windows\System32\config\SOFTWARE.

L’enregistreur de registre garantit que les fichiers Hive sont enregistrés sur le disque avant son cliché instantané.

Lors de la sauvegarde des ruches du Registre, un demandeur remplace \Device\HarddiskVolumeX par la chaîne d’objet d’appareil du cliché instantané du volume.

Notes

Vous pouvez convertir le chemin \Device\HarddiskVolumeX en un chemin Win32 équivalent à l’aide de la fonction QueryDosDevice . Pour plus d’informations, consultez Obtention d’un nom de fichier à partir d’un descripteur de fichier ou Affichage des noms de chemin d’accès de volume.

 

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

Notes

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

Pour une restauration en ligne (mode sans échec ou système d’exploitation complet), les sous-clés dans 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 à l’aide de la valeur MOVEFILE_DELAY_UNTIL_REBOOT dans le paramètre dwFlags .

Pour conserver le contenu de la clé de Registre PendingFileRenameOperations , votre application de sauvegarde doit appeler la fonction RegLoadKey pour connecter le fichier de Registre à restaurer au registre actif. Votre application de sauvegarde 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, les fonctions RegFlushKey et RegUnloadKey doivent être appelées.

Pour une restauration hors connexion (Environnement de récupération Windows ou Windows PE), il n’est pas nécessaire d’honorer la clé de Registre PendingFileRenameOperations .

Restauration du Registre à l’aide d’API Win32 non VSS dans Windows Server 2003

Notes

Les informations suivantes s’appliquent uniquement aux opérations de restauration liées à la récupération d’urgence (également appelées récupération complète) qui sont effectuées dans 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 qui doit être restauré.

Pour ce faire, une application de sauvegarde peut appeler RegLoadKey pour connecter le fichier de Registre à restaurer au registre actif. Il 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ées.

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 remplacées au moment de la restauration :

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\BackupRestore\KeysNotToRestore

Une partie du processus de restauration de l’état du système implique la restauration d’un registre précédemment sauvegardé.

Les applications de sauvegarde doivent être particulièrement prudents lors de la restauration de la rucheHKEY_LOCAL_MACHINE\SYSTEM , car le processus d’installation d’une version temporaire du système d’exploitation Windows aura des clés établies dans la ruche système nouvellement 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 du système d’origine, la restauration des clés d’origine de la carte précédente entraîne des résultats imprévisibles. Cela est dû au fait que le service Plug-and-Play a détecté et placé les entrées de registre de service et de pilotes appropriées dans le registre. Ces valeurs doivent être conservées pour démarrer correctement après la restauration du système.

Cette section décrit comment les applications de sauvegarde peuvent découvrir les clés et les fichiers à conserver lors de l’exécution d’une restauration de la HKEY_LOCAL_MACHINE\SYSTEM hive. Dans certains cas, cela implique de copier par programme les clés de la ruche d’installation nouvellement installée dans la ruche à restaurer. Dans d’autres cas, il suffit de spécifier ces clés dans le fichier de configuration INF du produit pour s’assurer que les clés de Registre d’un produit ne sont pas remplacées.

Les clés (et les données clés) qui doivent être conservées sont énumérées dans la rucheHKEY_LOCAL_MACHINE\SYSTEM sous le

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore\KeysNotToRestore

key en tant qu’ensembles de chaînes REG_MULTI_SZ ( appelées chaînes de clé 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 n’importe quelle application ou service peut ajouter des valeurs à tout moment.

La façon dont les chaînes de clé 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 une barre oblique inverse ('\') sont interprétées comme des sous-clés. Lorsqu’une telle sous-chaîne est rencontrée, l’application de sauvegarde doit conserver toutes les données et toutes les clés subordonnées.

    Par exemple, les éléments suivants spécifient que toutes les clés et données subordonnées doivent être conservées au cours d’une opération de restauration :

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

    À cette fin, cette clé et toutes les clés et données subordonnées doivent être copiées à partir du registre existant (c’est-à-dire celui créé par l’installation de Windows) dans le registre nouvellement restauré. C’est ce qu’on appelle 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é de services dans le registre existant (par exemple, ceux créés par l’installation de Windows) doit être fusionnée dans le registre restauré. Il s’agit d’une opération de fusion de clés , et si une sous-clé existe dans la ruche existante et 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 que la sous-clé dans le restauré ne le fait pas.
    • Si la sous-clé de la ruche existante et restaurée contient une valeur nommée « start » et 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émarre et peut avoir une valeur numérique comprise entre 0 et 4. Plus la valeur est faible, 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 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 du répertoire restauré, la valeur inférieure doit être conservée.

    Une fois de plus, cette clé est utilisée pour déterminer si un service ou un pilote doit être démarré au moment du démarrage, au moment du système, manuellement, automatiquement ou désactivé. La valeur inférieure représente une heure de début antérieure. L’heure de début antérieure doit être appliquée au nouveau registre pour garantir que le ou les pilotes sont correctement démarrés au démarrage suivant.

  3. Les chaînes de clés dont le caractère d’arrêt n’est ni une barre oblique inverse 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 par programme implique l’API de Registre Win32. Par exemple, un algorithme est énuméré ci-dessous :

    1. Restaurez le fichier hive système sauvegardé dans un fichier. Pour cet exemple, laissez le nom System.reg.

    2. Utilisez RegLoadKey pour charger System.reg dans HKEY_LOCAL_MACHINE sous un nom temporaire. Par exemple, l’un de ces noms peut être

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

    3. Énumérez les valeurs de la sous-clé KeysNotToRestore à partir des deux copies du Registre et créez un sur-ensemble des listes. Copiez chacune de ces clés à partir de l’existant

      HKEY_LOCAL_MACHINE\SYSTEM

      clé dans le

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

      clé selon la sémantique décrite ci-dessus.

    4. Lorsque vous avez terminé, utilisez les points d’entrée RegFlushKey&RegUnloadKey pour enregistrer le

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

      revenez à System.reg.

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

      HKEY_LOCAL_MACHINE\SYSTEM

      fichier hive, SYSTEM.