Operazioni di backup e ripristino del Registro di sistema in Vss

Il servizio Registro di sistema di Windows supporta un writer VSS, denominato writer del Registro di sistema, che consente ai richiedenti di eseguire il backup di un registro di sistema usando i dati archiviati in un volume copiato shadow. Per altre informazioni sul writer del Registro di sistema, vedere Writer VSS in-Box.

Il writer del Registro di sistema esegue backup e ripristini sul posto del Registro di sistema. Inoltre, il writer del Registro di sistema segnala solo hive di sistema; non segnala hive utente.

Windows Server 2003: il writer del Registro di sistema usa un file di repository intermedio (noto anche come file spit) per archiviare i dati del Registro di sistema. Inoltre, il writer del Registro di sistema segnala hive di sistema e hive utente.

L'ID writer per il writer del Registro di sistema è AFBAB4A2-367D-4D15-A586-71DBB18F8485.

Windows XP: nessun writer del Registro di sistema. I dati del Registro di sistema vengono segnalati dal writer bootable State, il cui ID writer è F2436E37-09F5-41AF-9B2A-4CA2435DBFD5.

Nota

Microsoft non fornisce supporto tecnico per sviluppatori o professionisti IT per l'implementazione di ripristini dello stato del sistema online in Windows (tutte le versioni). Per informazioni sull'uso delle API e delle procedure fornite da Microsoft per implementare i ripristini dello stato del sistema online, vedere le risorse della community disponibili in MSDN Community Center.

 

Nota

Le informazioni seguenti si applicano solo a Windows Server 2003 e Windows XP.

 

Backup del Registro di sistema tramite Vss

Il writer del Registro di sistema esporta e salva i file del Registro di sistema attivi nei percorsi definiti dalla chiave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\hivelist.

I nomi dei valori in questa voce del Registro di sistema identificano l'hive del Registro di sistema da salvare e i dati del valore forniscono il file contenente il file (il file hive). I file hive vengono specificati con il formato seguente: \Device\HarddiskVolumeX\path\filename.

Ad esempio, in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\hivelist è possibile che venga visualizzato \REGISTRY\MACHINE\SOFTWARE = \Device\HarddiskVolume1\Windows\System32\config\SOFTWARE.

Il writer del Registro di sistema garantisce che i file Hive vengano salvati su disco prima della copia shadow.

Quando si esegue il backup degli hive del Registro di sistema, un richiedente sostituirà \Device\HarddiskVolumeX con la stringa dell'oggetto dispositivo della copia shadow del volume.

Nota

È possibile convertire il percorso \Device\HarddiskVolumeX in un percorso Win32 equivalente usando la funzione QueryDosDevice. Per altre informazioni, vedere Recupero di un nome file da un handle di file o visualizzazione dei nomi dei percorsi del volume.

 

Ripristino del Registro di sistema con API Win32 non VSS

Nota

Il ripristino del Registro di sistema non è supportato in Windows Server 2016 e versioni successive.

Per un ripristino online (modalità provvisoria o sistema operativo completo), è necessario mantenere le sottochiavi nella chiave del Registro di sistema HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control Session\Manager\PendingFileRenameOperations.

Le funzioni MoveFileEx e MoveFileTransacted usano questa chiave del Registro di sistema per archiviare informazioni sui file rinominati usando il valore MOVEFILE_DELAY_UNTIL_REBOOT nel parametro dwFlags.

Per mantenere il contenuto della chiave del Registro di sistema PendingFileRenameOperations , l'applicazione di backup deve chiamare la funzione RegLoadKey per connettere il file del Registro di sistema da ripristinare al Registro di sistema attivo. L'applicazione di backup può quindi usare le varie funzioni del Registro di sistema per copiare le chiavi e i valori desiderati nell'hive caricato. Al termine della copia, è necessario chiamare le funzioni RegFlushKey e RegUnloadKey.

Per un ripristino offline (Windows Recovery Environment o Windows PE), non è necessario rispettare la chiave del Registro di sistema PendingFileRenameOperations .

Ripristino del Registro di sistema con API Win32 non VSS in Windows Server 2003

Nota

Le informazioni seguenti si applicano solo alle operazioni di ripristino di emergenza correlate al ripristino di emergenza (noto anche come ripristino bare metal) eseguite in Windows Server 2003.

 

Quando si ripristina il Registro di sistema, un'applicazione di backup deve spostare alcune delle sottochiavi dal Registro di sistema corrente nel Registro di sistema da ripristinare.

A tale scopo, un'applicazione di backup può chiamare RegLoadKey per connettere il file del Registro di sistema da ripristinare al Registro di sistema attualmente attivo. Può quindi usare le varie funzioni del Registro di sistema per copiare le chiavi e i valori desiderati nell'hive caricato. Al termine della copia, vengono chiamati RegFlushKey e RegUnloadKey .

È presente una chiave del Registro di sistema che indica a un'applicazione di ripristino (richiedente) le chiavi del Registro di sistema in HKEY_LOCAL_MACHINE\SYSTEM che non devono essere sovrascritte in fase di ripristino:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\BackupRestore\KeysNotToRestore

Parte del processo di ripristino dello stato del sistema prevede il ripristino di un registro di cui è stato eseguito il backup in precedenza.

Le applicazioni di backup devono prestare particolare attenzione quando si ripristina l'hive HKEY_LOCAL_MACHINE\SYSTEM perché il processo di installazione di una versione temporanea del sistema operativo Windows avrà stabilito chiavi nell'hive di sistema appena installato i cui valori devono sopravvivere all'operazione di ripristino.

Ad esempio, quando il sistema sostitutivo ha una scheda di interfaccia di rete diversa dal sistema originale, il ripristino delle chiavi originali per la scheda precedente porterà a risultati imprevedibili. Ciò è dovuto al fatto che il servizio Plug and Play ha rilevato e inserito le voci appropriate del Registro di sistema del servizio e del driver nel Registro di sistema. Questi valori devono essere mantenuti per l'avvio corretto dopo il ripristino di sistema.

Questa sezione descrive come le applicazioni di backup possono individuare quali chiavi e file devono essere mantenuti durante l'esecuzione di un ripristino dell'hive HKEY_LOCAL_MACHINE\SYSTEM . In alcuni casi, ciò comporta la copia a livello di codice delle chiavi dall'hive di installazione appena installata nell'hive da ripristinare. In altri casi, assicurarsi che le chiavi del Registro di sistema di un prodotto non vengano sostituite sia semplice come specificare tali chiavi nel file di configurazione INF del prodotto.

Le chiavi (e i dati chiave) che devono essere mantenuti vengono enumerate nell'hive HKEY_LOCAL_MACHINE\SYSTEM in

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore\KeysNotToRestore

key as sets of REG_MULTI_SZ strings (denominate stringhe chiave in questo documento).

Un'applicazione di backup (richiedente) deve esaminare i valori di queste chiavi nel Registro di sistema attivo e nel Registro di sistema appena ripristinato perché qualsiasi applicazione o servizio può aggiungere valori in qualsiasi momento.

Il modo in cui le stringhe chiave devono essere interpretate dalle applicazioni di backup è determinato dal carattere terminale:

  1. Le stringhe chiave terminate con una barra rovesciata ('\') vengono interpretate come sottochiavi. Quando viene rilevata una sottostringa di questo tipo, l'applicazione di backup deve mantenere tutti i dati e tutte le chiavi subordinate.

    Ad esempio, il codice seguente specifica che tutte le chiavi e i dati subordinati devono essere mantenuti in un'operazione di ripristino:

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

    A questo scopo, questa chiave e tutte le chiavi e tutti i dati subordinati devono essere copiati dal Registro di sistema esistente (ovvero quello creato dall'installazione di Windows) nel Registro di sistema appena ripristinato. Si tratta di un'operazione di sostituzione della chiave. Questa operazione sostituisce la chiave corrispondente nel Registro di sistema ripristinato.

  2. Le stringhe chiave il cui carattere di terminazione è un asterisco ('*') specifica che tutte le sottochiavi devono essere unite. Ad esempio, la stringa di chiave:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\*

    specifica che la chiave dei servizi nel Registro di sistema esistente (ad esempio quelle create dall'installazione di Windows) deve essere unita nel Registro di sistema ripristinato. Questa operazione è denominata operazione di unione delle chiavi e se esiste una sottochiave sia nell'hive esistente che nell'hive ripristinato, la chiave nella directory ripristinata viene mantenuta con le eccezioni seguenti:

    • Se la sottochiave nell'hive esistente contiene un valore denominato "start" e la sottochiave nel file ripristinato non lo è.
    • Se la sottochiave nell'hive esistente e ripristinata contiene un valore denominato "start" e il relativo valore numerico nell'hive esistente è minore.

    Il valore "start" nel Registro di sistema specifica quando un servizio o un driver verrà avviato e può avere un valore numerico compreso tra 0 e 4. Minore è il valore, prima del processo di avvio verrà avviato il servizio.

    Se questa chiave esiste sia nella directory esistente che nella directory ripristinata, è necessario esaminare il valore della chiave iniziale in ogni hive. Se il valore nell'hive esistente è inferiore al valore nella directory ripristinata, è necessario mantenere il valore inferiore.

    Anche in questo caso, questa chiave viene usata per determinare se un servizio o un driver deve essere avviato in fase di avvio, in fase di sistema, manualmente, automaticamente o disabilitato. Il valore inferiore rappresenta un'ora di inizio precedente. L'ora di inizio precedente deve essere applicata al nuovo Registro di sistema per assicurarsi che il servizio o i driver vengano avviati correttamente all'avvio successivo.

  3. Le stringhe chiave il cui carattere di terminazione non è né una barra rovesciata né un asterisco vengono interpretate come valori del Registro di sistema da mantenere.

    Ad esempio, la stringa di chiave:

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

    Il meccanismo con cui le chiavi possono essere mantenute a livello di codice implica l'API del Registro di sistema Win32. Ad esempio, un algoritmo è enumerato di seguito:

    1. Ripristinare il file Hive di sistema di cui è stato eseguito il backup in un file. Per questo esempio, lasciare che il nome sia System.reg.

    2. Usare RegLoadKey per caricare System.reg in HKEY_LOCAL_MACHINE con un nome temporaneo. Ad esempio, un nome di questo tipo potrebbe essere

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

    3. Enumerare i valori nella sottochiave KeysNotToRestore da entrambe le copie del Registro di sistema e creare un superset degli elenchi. Copiare ogni chiave di questo tipo dall'esistente

      HKEY_LOCAL_MACHINE\SYSTEM

      chiave nel

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

      chiave in base alla semantica descritta in precedenza.

    4. Al termine, usare i punti di ingresso RegFlushKey e RegUnloadKey per salvare

      HKEY_LOCAL_MACHINE\TMP_SYSTEM

      torna a System.reg.

    5. Infine, usare RegReplaceKey per specificare che System.reg deve sostituire

      HKEY_LOCAL_MACHINE\SYSTEM

      file hive, SYSTEM.