Analizziamo in dettaglio il Registro di sistema
Vi ricordiamo che l’utilizzo dell’Editor del registro è estremamente delicato. Dovete avvicinarvi alle sue chiavi con la stessa prudenza che un artificiere usa davanti a un ordigno: come un artificiere rischia la sua vita, voi mettete a rischio la vita del vostro PC. L’intero sistema dipende dal Registro: modificandolo senza cognizione di causa rischiate di fare danni seri.
Fatte queste indispensabili premesse, aprite il Registro come abbiamo visto in precedenza (in Start digitate regedit e date Invio). La struttura “base” del Registro apparirà come in figura 3.

Figura 3: il Registro di sistema di Windows Vista non si discosta molto da quello di Windows XP. Molte chiavi sono familiari, altre invece, come vedremo più avanti, sono scomparse
Alla vostra sinistra noterete una struttura definita ad albero. È composta da una serie di cartelle che iniziano tutte con il prefisso HKEY.
Queste cartelle sono chiamate chiavi (Key) e possono espandersi fino a formare altre sottochiavi. La struttura del Registro di sistema di Windows Vista ne conta cinque (come vedete in figura 3). In figura 4 vedete invece la struttura in modalità espansa.

Figura 4: per vedere la struttura espansa de Registro di sistema vi basterà cliccare sul segno + accanto a ogni chiave e sottochiave
Passiamo adesso a esaminare una per una le cinque chiavi:
- HKEY_CLASSES_ROOT: contiene le informazioni utilizzate da diverse tecnologie OLE e i dati sull’associazione di classi di file, che equivalgono al Registro di sistema di Windows per MS-DOS. Una chiave o un valore particolare sono presenti in HKEY_CLASSES_ROOT se la chiave o il valore corrispondente sono presenti in HKEY_LOCAL_ MACHINE\SOFTWARE\Classes oppure in HKEY_CURRENT_USER\ SOFTWARE\Classes. Se una chiave o un valore sono presenti in entrambe le posizioni, allora quella visualizzata in HKEY_CLASSES_ ROOTè la versione contenuta in HKEY_CURRENT_USER;
- HKEY_CURRENT_USER: contiene il profilo utente dell’utente attualmente connesso in modalità interattiva (al contrario della modalità remota) incluse le variabili di ambiente, le impostazioni del desktop, le connessioni di rete, le stampanti e le preferenze del programma. Infatti, la parola User richiama proprio l’utente. Questa sottostruttura è un alias della sottostruttura HKEY_USERS e fa riferimento a HKEY_USERS\identificativo di protezione (SID) dell’utente corrente;
- HKEY_LOCAL_MACHINE: contiene informazioni sul sistema del computer locale, compresi i dati relativi all’hardware e al sistema operativo quali il tipo di bus, la memoria di sistema, i driver di periferica e i dati di controllo dell’avvio;
- HKEY_USERS: contiene le informazioni riguardanti i profili utente e il profilo predefinito caricati correntemente, comprese le informazioni presenti anche in HKEY_CURRENT_USER. I profili degli utenti che accedono a un server in modalità remota non sono caricati in questa chiave del server, ma vengono caricati, invece, nel Registro di sistema del computer locale;
- HKEY_CURRENT_CONFIG: contiene informazioni sul profilo hardware utilizzato dal sistema del computer locale all’avvio. Queste informazioni vengono utilizzate per configurare determinate impostazioni, come i driver di periferica da caricare e la risoluzione dello schermo da utilizzare. Questa sottostruttura fa parte di HKEY_LOCAL_MACHINE e fa riferimento a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current.
Ricordiamo che ogni nome di chiave principale inizia con HKEY_ per indicare agli sviluppatori software che si tratta di un handle utilizzabile da un programma. Una versione dell’Editor del Registro di sistema, Regedit.exe, presenta una sesta sottostruttura, HKEY_DYN_DATA. Si tratta della sottostruttura dei registri di Windows 95 e Windows 98 e che non è stata più utilizzata da Windows 2000 fino a Vista.
HKEY_CLASSES_ROOT presenta un comportamento diverso dalle versioni precedenti di Windows. Dalla versione di Windows 2000, la funzione per la registrazione individuale a una classe fornisce una visualizzazione di HKEY_CLASSES_ROOT in cui sono presenti sia le registrazioni a una classe specifica degli utenti sia la registrazione a una classe specifica di un computer. Per mezzo di questa funzione, diversi utenti possono disporre di differenti set di registrazioni a una classe (tra cui quelli per le associazioni di file, i componenti COM e i tipi MIME). In precedenza le registrazioni venivano condivise da tutti gli utenti, consentendo a ognuno di essi di modificare le registrazioni degli altri. La registrazione individuale, invece, tiene separate le registrazioni di ogni singolo utente e permette così all’amministratore di migliorare la protezione di HKEY_LOCAL_MACHINE\ Software\Classes.
Hive e file del Registro di sistema
Il termine hive descrive un insieme di chiavi, sottochiavi e valori che trova origine nel livello superiore della gerarchia del Registro di sistema. Un hive viene salvato in un solo file e in un file .log (entrambi situati nelle cartelle systemdirectory\System32\Config oppure systemdrive\Documents and Settings\nomeutente). Le stringhe systemroot e systemdrive sono segnaposti e indicano rispettivamente la directory e la partizione contenenti i file di sistema di Windows Vista. Se i file di sistema di Windows Vista, per esempio per l’utente di nome Pippo, si trovano nella directory Winnt della partizione C:, i file hive saranno memorizzati nelle cartelle C:\ Winnt\System32\Config e C:\Documents and Settings\Pippo. I file hive sono detti anche file del Registro di sistema o file registro.
Voci di valore nelle chiavi del Registro di sistema
Ogni chiave o sottochiave del Registro di sistema può contenere dati definiti voci di valore. Le informazioni memorizzate in alcune voci di valore riguardano i singoli utenti, mentre altre riguardano tutti gli utenti di un computer. Una voce di valore è costituita da tre parti: il nome del valore, il tipo di dati del valore e il valore stesso. Le tre parti delle voci di valore vengono sempre visualizzate nell’ordine mostrato in figura 5.

Figura 5: nella parte destra del Registro di sistema troviamo i nomi delle singole voci, il tipo (in questo caso REG_DWORD) e il valore
Il tipo indica il formato dei dati. I tipi di dati compresi tra 0 e 0x7FFFFFFF sono riservati per le definizioni del sistema. È consigliabile che i programmi utilizzino questi tipi di dati, tuttavia a essi sono riservati anche i tipi di dati compresi tra 0x80000000 e 0xFFFFFFFF. Nella Tabella 1 vengono elencati i tipi di dati correntemente definiti e utilizzati dal sistema.
Tabella 1: i tipi di dati definiti e utilizzati dal sistema
| Nome |
Dipo di dati |
Descrizione |
| Valore binario |
REG_BINARY |
Dati binari non formattati. Quasi tutte le informazioni sui componenti hardware sono memorizzate come dati binari e vengono visualizzate nell’Editor del Registro di sistema in formato esadecimale. |
| Valore DWORD |
REG_DWORD |
Sono dati rappresentati da un numero della lunghezza di 4 byte. Molti parametri relativi a driver di periferica e servizi appartengono a questo tipo e vengono visualizzati nell’Editor del Registro di sistema in formato binario, esadecimale oppure decimale. |
| Valore stringa espandibile |
REG_EXPAND_SZ |
Stringa di dati che può presentarsi di lunghezza variabile. Questo tipo di dati include le variabili risolte quando un programma o un servizio utilizzano i dati. |
| Valore multistringa |
REG_MULTI_SZ |
Stringa multipla. A questo tipo di stringa appartengono i valori che contengono elenchi o valori multipli in un formato leggibile. Le voci sono solitamente separate da spazi, virgole o altri segni di punteggiatura. |
| Valore stringa |
REG_SZ |
Stringa di testo di lunghezza fissa. |
| Valore binario |
Reg_Resource_List |
Una serie di matrici nidificate progettata per memorizzare un elenco di risorse utilizzate da un driver di dispositivo hardware o da uno dei dispositivi fisici controllati. Questi dati vengono rilevati e scritti nella struttura \ResourceMap dal sistema. Essi sono visualizzati nell’editor del Registro di sistema in formato esadecimale come valori binari. |
| Valore binario |
REG_RESOURCE_
REQUIREMENTS_LIST |
Una serie di matrici nidificate progettata per memorizzare un elenco di possibili risorse hardware o uno dei dispositivi fisici che il driver di dispositivo può utilizzare, da cui il sistema scrive un sottoinsieme nella struttura \ResourceMap. Questi dati sono rilevati dal sistema e sono visualizzati nell’editor del Registro di sistema in formato esadecimale come valori binari. |
| Valore binario |
REG_FULL_RESOURCE_
DESCRIPTOR |
Una serie di matrici nidificate progettate per memorizzare un elenco di risorse utilizzate da un dispositivo hardware fisico. Questi dati vengono rilevati e scritti nella struttura \HardwareDescription dal sistema e sono visualizzati nell’editor del Registro di sistema in formato esadecimale come valori binari. |
| Nessuno |
Reg_none |
Si tratta di dati privi di un tipo particolare. Questi sono scritti nel Registro di sistema dal sistema o dalle applicazioni e sono visualizzati nell’editor del Registro di sistema in formato esadecimale come valori binari. |
| Collegamento |
REG_LINK |
Una stringa Unicode che assegna un nome a un collegamento simbolico. |
| Valore QWORD |
REG_QWORD |
Dati rappresentati da un numero intero a 64 bit. Questi dati sono visualizzati nell’editor del Registro di sistema come valori binari. Sono comparsi per la prima volta in Windows 2000. |
 |
 |
 |
 |
|
|
 |
|
 |
 |
 |
|