Home | Chi sono | Contattami
 

Progr. lineare

Delphi
 
Componenti
  Database
 
Miei articoli

Windows

Miei articoli 

 

Backup / Restore completo del registro di Windows


Nell'articolo Il Registro di Windows ho descritto la struttura del registro in termini di corrispondenze con determinati file. Focalizziamoci sulla prima sezione ossia l'elenco delle corrispondenze tra file e HKey_Local_Machine: chi è che non ha mai tentato di copiare questi file? Tutti quanti, e tutti quanti si sono beccati un bel errorino del tipo

In questo caso ad esempio abbiam provato a copiarci il SAM e taac, errore. In linea di massima di fronte ad un qualsiasi file aperto in modalità esclusiva come in questo caso, si può realizzare un driver per permetterci la copia; nel caso specifico però la strada è molto più breve e passa semplicemente attraverso l'utilizzo della api Win32 per il Registry ed il privilegio di Backup; le api Win32 che utilizzeremo sono la RegCreateKeyEx (per ottenere un handle alla chiave di registro che vogliamo salvare) e la RegSaveKey (per salvare la chiave in un file). Con la suddetta accoppiata possiamo eseguire il backup di una qualsiasi chiave di registro ivi incluse le root (HKEY_LOCAL_MACHINE, etc...). Se vogliamo salvarci la HKEY_LOCAL_MACHINE non c'è bisogno di chiamare la RegCreateKeyEx in quanto come handle può essere specificata la costante HKEY_LOCAL_MACHINE (valore $80000002); stesso discorso per le altre root (costanti corrispondenti dichiarate nella unit Windows). Il problema che ci si presenta è come backuppare chiavi che hanno una ACL che ci impedisce l'accesso: la chiave HKLM\SAM è un esempio; ed è qui che interviene il privilegio di Backup: il privilegio di Backup (di default appartiene alle utenze dei gruppi Administrators e Backup Operators) consente di bypassare l'ACL settata su un elemento del File System o su un elemento del Registry. Sei un file che è accessibile solo ed unicamente dall'utenza System? Behh, se dispongo del Privilegio di Backup e ce l'ho abilitato, allora posso leggerti e scriverti. Questo concetto viene espresso chiaramente nell'articolo LSA Secrets nell'ambito della descrizione dell'implementazione alternativa (fondo pagina). Con il Privilegio di Backup possiamo quindi utilizzare la RegSaveKey ovunque e backupparci l'intero registro senza dover passare per la copia dei file corrispondenti nella cartella C:\Windows\System32\config . Per eseguire il Restore si ricorre alla corrispondente api win32 che si chiama appunto RegRestoreKey . Un esempio completo e funzionante di Backup e Restore dell'intero Registry lo si può trovare all'indirizzo

http://www.joejoesoft.com/cms/showpage.php?cid=124

Ho testato l'applicativo sia in Backup sia in Restore su una installazione di Windows XP in emulazione su VirtualBox (che uso come test vari da oltre 1 anno e quindi con un Registry bello devastato) ed è tutto OK. Ci mette un pò ad eseguire il backup ma questo non è un problema dell'applicativo (fare Milano-Roma in 10 secondi non è possibile). In ogni caso va usato con cautela nel Restore (non si sa mai ....): far le prove su un sistema di prova e verificare bene.

In conclusione RegSaveKey e RegRestoreKey sono la chiave di tutto

Un altro esempio di utilizzo delle suddette api win32 è l'applicativo RegHives in C

 

 

 




 


 


 


 

 

 
 
Your Ad Here