Registro di sistema

Da Wikipedia, l'enciclopedia libera.

In informatica, per registro di sistema ci si riferisce alla base di dati in cui sono custodite le opzioni e le impostazioni di un sistema operativo di tipo Microsoft Windows, e di tutte le applicazioni installate. Il concetto di registro di sistema è legato alla logica dei sistemi operativi Microsoft, che conservano tutte le proprie impostazioni in un numero ristretto di file.

Il registro di sistema di Microsoft Windows[modifica | modifica wikitesto]

Nei sistemi Windows, il registro di sistema è stato introdotto a partire dalla versione Windows 3.0 e ha permesso l'eliminazione della gestione tramite file INI delle informazioni riguardanti:

Struttura del registro di Microsoft Windows[modifica | modifica wikitesto]

Il registro è organizzato in una gerarchia originata da alcune sezioni principali; ogni nodo della gerarchia è detto chiave (key), ed ogni nodo può contenere uno o più elementi di dati, detti valori (values), di cui uno anonimo (retaggio di compatibilità).

Le chiavi di primo livello (chiavi radice, root keys) hanno il nome interamente in maiuscolo con "HKEY" come prefisso, dall'abbreviazione di handle to a key (che ha origine dalla API di Windows), traducibile come riferimento alla chiave; i loro nomi sono solitamente abbreviati in una sigla di tre o quattro lettere, con prefisso "HK".

Il percorso di una chiave viene indicato con una sintassi simile ai percorsi di file in Windows, utilizzando quindi il carattere "\" (barra rovesciata) come separatore; per esempio, HKEY_CURRENT_USER\Software\Microsoft\Windows identifica la chiave Windows contenuta nella chiave Microsoft contenuta in Software, contenuta a sua volta nella chiave principale HKEY_CURRENT_USER.

Analogamente, un valore viene identificato dal percorso unito al nome del valore stesso, come in HKEY_CURRENT_USER\Software\Microsoft\Windows\Version, che identifica il valore Version contenuto nella chiave Windows ecc.

Un valore può consistere in:

  • una stringa di caratteri (valore stringa, tecnicamente REG_SZ)
  • una sequenza arbitraria di byte (valore binario, REG_BINARY)
  • un numero a 32 bit (che ammette quindi valori da 0 a 4.294.967.295, cioè 232 – 1) (valore dword, REG_DWORD)
  • un gruppo di stringhe di caratteri (valore multi-stringa, REG_MULTI_SZ)
  • una stringa con riferimenti a variabili d'ambiente (valore stringa ad espansione, riferito alla sostituzione dinamica delle variabili d'ambiente (espansione) effettuata al momento della lettura del valore stesso; nome tecnico REG_EXPAND_SZ)
  • un valore amorfo (cioè di nessun tipo già definito; indicato con REG_NONE)

Sono definiti anche alcuni altri tipi di valore, ma sono impiegati solo in contesti particolari, come ad esempio per memorizzare la configurazione di un driver Plug and Play (vari nomi tecnici, fra cui REG_RESOURCE_REQUIREMENTS_LIST).

Chiave HKEY_CLASSES_ROOT[modifica | modifica wikitesto]

In HKEY_CLASSES_ROOT (abbreviato in HKCR) sono memorizzate informazioni circa le applicazioni registrate, come le associazioni dei tipi di file e le classi OLE. A partire da Windows 2000, HKCR è una fusione (dinamica) di HKCU\Software\Classes e HKLM\Software\Classes. Se un dato valore esiste in tutte e due le strutture, quello presente in HKCU\Software\Classes ha la precedenza.

Chiave HKEY_CURRENT_USER[modifica | modifica wikitesto]

Abbreviato HKCU, HKEY_CURRENT_USER è dove sono memorizzati tutti i dati del registro relativi al profilo dell'utente attivo. HKCU è un collegamento simbolico alla chiave relativa all'utente contenuta in HKEY_USERS. "User"=hex(0):73,6c,74,61,6e,37,35,00

Chiave HKEY_LOCAL_MACHINE[modifica | modifica wikitesto]

HKEY_LOCAL_MACHINE, abbreviato HKLM, contiene impostazioni comuni a tutti gli utenti del sistema. Nella sua sottochiave System è memorizzata la configurazione hardware del computer. e anche i software 645FF040-5081-101B-9F08-00AA002F954E [non chiaro]

Chiave HKEY_USERS[modifica | modifica wikitesto]

Nella chiave HKEY_USERS (abbreviato HKU) sono presenti le chiavi HKEY_CURRENT_USER di tutti gli utenti connessi al sistema.

Chiave HKEY_CURRENT_CONFIG[modifica | modifica wikitesto]

HKEY_CURRENT_CONFIG, abbreviato HKCC, è dove sono raccolte informazioni volatili sulla sessione. Questa chiave radice è presente solo nel registro delle versioni di Windows derivate da Windows NT.

Chiave HKEY_DYN_DATA[modifica | modifica wikitesto]

Abbreviato HKDD, HKEY_DYN_DATA contiene le statistiche sulle prestazioni che possono essere visualizzate con il monitor di sistema (SYSMON.EXE). Questa chiave radice è presente solo nei sistemi operativi basati su Windows 95 (95, 98 e ME).

Storia[modifica | modifica wikitesto]

Il registro di sistema, anche se solo pochi utenti ne sono a conoscenza, risale a prima di Windows 95: la sua prima implementazione risale infatti a Windows 3.0, dalla quale si è evoluto negli anni (e con le varie versioni di Windows) fino alla sua più recente incarnazione, quella di Windows 8.

Windows 3.0[modifica | modifica wikitesto]

L'introduzione del registro di sistema in Windows 3.0 fu resa necessaria da due novità di quella versione di Windows:

  • La piattaforma Object Linking and Embedding (OLE) di Microsoft, che per il suo funzionamento aveva bisogno di un deposito stabile dove memorizzare i componenti OLE installati nel sistema; requisito che fu soddisfatto con l'aggiunta nel file WIN.INI della sezione [Embedding].
  • Il File Manager ed il Program Manager, per i quali era necessaria una posizione dove conservare le associazioni tra i tipi di file e le applicazioni che li gestivano, che fu creata nel file WIN.INI come sezione [Extensions].

Il registro di sistema, nella sua primissima versione, risiedeva quindi interamente nel file WIN.INI.

Questo è un esempio della sezione [Extensions]:

[Extensions]
bmp=PBrush.exe ^.bmp ^.dib
crd=CardFile.exe ^.crd
wri=Write.exe ^.wri

Come si può vedere, ad ogni applicazione viene associata una o più estensioni di nome di file.

Una struttura differente veniva impiegata invece nella sezione [Embedding]:

[Embedding]
Mplayer=Media Clip, Media Clip, MPlayer.exe, picture
Paintbrush.Picture.1=Paintbrush Picture, Paintbrush Picture 1.0, C:\Windows\PBrush.exe, picture

Qui, a fianco dell'ID programmatico (eventualmente completo di numero di versione), compaiono il nome generico della classe, il nome specifico di questa versione della classe, il percorso del programma in grado di creare oggetti di questa classe (fabbrica di oggetti; in inglese impropriamente class factory, fabbrica di classi), ed il tipo di oggetto.

Windows 3.1[modifica | modifica wikitesto]

Il registro di Windows 3.0 era fortemente penalizzato dal risiedere in un file di testo; in Windows 3.1, questa limitazione fu aggirata spostando tutto il registro di sistema in un unico file non testuale, REG.DAT. Questo file era sicuramente un miglioramento rispetto al WIN.INI, ma aveva comunque un limite alla dimensione massima, di 64 KB; questo grave limite fece sì che gli sviluppatori di software continuassero ad usare file esterni per memorizzare le impostazioni delle loro applicazioni.

Windows 95/98[modifica | modifica wikitesto]

In Windows 95, la struttura del registro fu ridisegnata completamente: non solo fu separato in due file (USER.DAT e SYSTEM.DAT), ma furono tolti anche quasi tutti i vincoli precedentemente imposti (quello della dimensione massima in primis) e ne fu promosso l'utilizzo massiccio come sostitutivo dei file di configurazione esterni.

Windows NT/2000/XP[modifica | modifica wikitesto]

Nell'obiettivo di un sistema operativo sicuro, Windows NT ed i sistemi da esso derivati hanno adottato una strategia supplementare: ogni chiave (nodo) del registro dispone di una propria lista di controllo degli accessi (ACL), che permette quindi di specificare restrizioni in base all'utente che cerca di accedervi. Oltre a questa importante differenza, anche qui il registro è stato ripartito in più file, anche se in maniera differente, ed ogni profilo utente include una versione privata della chiave relativa alle impostazioni dell'utente, HKEY_CURRENT_USER.

Modifica del registro[modifica | modifica wikitesto]

Interfaccia grafica[modifica | modifica wikitesto]

Microsoft TweakUI per Windows

Per modificare il registro manualmente, Microsoft fornisce con i suoi sistemi operativi Windows un'applicazione apposita, REGEDIT.EXE o REGEDT32.EXE (a seconda della versione del sistema). La disponibilità di un applicativo per modificare il registro, comunque, non implica che questa sia un'operazione per tutti: una disattenzione durante la modifica del registro può portare a rendere il sistema inutilizzabile; proprio a causa della delicatezza di questa operazione, molti produttori di software offrono applicazioni specializzate nella modifica del registro con un'interfaccia grafica più simile al Pannello di controllo, e quindi più familiare all'utente medio; alcune società producono anche programmi per la pulizia automatica del registro, operazione anch'essa potenzialmente pericolosa.

Anche Microsoft stessa mette a disposizione gratuitamente un piccolo programma di nome TweakUI, che permette di modificare molti parametri dell'interfaccia grafica di Windows e di apportargli alcune piccole ottimizzazioni.

Breve storia di REGEDIT (e REGEDT32)[modifica | modifica wikitesto]

Un primordiale strumento per la modifica del registro fece la sua comparsa con Windows 3.1, con il nome di Editor delle informazioni di registrazione (Registration info editor, nella versione in lingua inglese), REGEDIT.EXE; lo scopo principale di questo programma era di modificare le associazioni di file e le registrazioni dei componenti OLE.

Con l'introduzione di Windows NT, la neonata API Win32 introdusse il concetto di permessi d'accesso anche per le chiavi del registro; per gestirle correttamente assieme alle altre nuove funzionalità del registro, fu creato appositamente un nuovo programma, REGEDT32.EXE, decisamente più completo del suo predecessore a 16 bit REGEDIT.EXE.

Editor del Registro di sistema di Windows Vista, esteticamente identico al suo antenato per Windows 95

Qualche anno più tardi, con l'avvento di Windows 95, REGEDIT.EXE fu ribattezzato come l'attuale Editor del Registro di sistema e fu portato a 32 bit. Questo tuttavia non implementava la sezione riguardante la sicurezza di Win32, così rimase un prodotto a sé stante, con un percorso produttivo disgiunto da quello di REGEDT32.EXE. Questa situazione rimase invariata anche con l'introduzione di Windows 98, dal momento che esso era solo una modesta evoluzione di Windows 95, almeno dal punto di vista della sicurezza. Il nuovo REGEDIT.EXE aveva un'interfaccia utente più funzionale e più accattivante del suo analogo per Windows NT; tuttavia era in grado di manipolare solo un sottoinsieme dei tipi di dato previsti da Win32 e, come detto sopra, non permetteva la modifica dei permessi d'accesso alle chiavi (che erano, di fatto, assenti).

Successivamente, prima con Windows NT 4.0 e poi con Windows 2000, furono distribuiti ambedue gli strumenti. Questo lasciava agli utenti la scelta fra un programma più rozzo, ma efficace, o un programma con un'interfaccia utente più familiare e pratica (simile in tutto e per tutto ad Esplora risorse), ma che non permetteva di sfruttare tutte le possibilità del sistema operativo. In particolare, essendo REGEDIT.EXE incapace di gestire molti dei tipi di dato del potente registro di Windows NT e dei suoi discendenti, la modifica di un valore di un tipo di dato sconosciuto a REGEDIT.EXE poteva portare alla corruzione del valore, con pesanti implicazioni sulla stabilità del sistema.

Finalmente, con Windows XP, i due programmi sono stati fusi in un discendente unico, fondamentalmente applicando la comoda interfaccia utente di REGEDIT.EXE al più sofisticato REGEDT32.EXE. Il risultato è chiamato REGEDIT.EXE, ed è presente un mini-programma di nome REGEDT32.EXE che rimanda sempre a REGEDIT.EXE.

Riga di comando[modifica | modifica wikitesto]

Per i sistemi basati su Windows NT esiste uno strumento che permette di operare sul registro di sistema da riga di comando. È incluso in Windows XP con il nome di REG.EXE, ed è disponibile separatamente per le versioni precedenti del sistema operativo di Microsoft. Il comando può essere invocato con questa sintassi:

REG.EXE [QUERY|ADD|DELETE|COPY|SAVE|LOAD|UNLOAD|RESTORE|COMPARE|EXPORT|IMPORT] [elenco parametri]

Inoltre, anche l'applicazione ad interfaccia grafica REGEDIT.EXE permette di operare via riga di comando, limitatamente all'importazione di file.REG (porzioni di registro memorizzate in formato testuale):

REGEDIT.EXE /s file

L'opzione /s indica di operare in modalità silenziosa, senza interazione con l'utente; se omesso, il programma chiederà all'utente di confermare l'operazione. In Windows 95 e Windows 98 l'opzione /s veniva eseguita correttamente anche in presenza di un eventuale blocco amministrativo del programma. A differenza di REG.EXE, REGEDIT.EXE non restituisce un codice d'errore (ERRORLEVEL) appropriato quando usato per importare un file, il che complica la gestione degli errori negli script automatizzati; un modo per stabilire il successo di un'operazione di importazione è di controllare successivamente se è possibile esportare la chiave che si era provato ad importare:

regedit /s Import.reg
regedit /e TestExport.reg "Chiave da importare"
if not exist TestExport.reg goto ImportError
del TestExport.reg
goto Exit
:ImportError
echo Errore durante l'importazione nel registro di sistema.
:Exit

L'operazione predefinita associata al tipo di file.REG, a partire da Windows 98, corrisponde all'importazione con richiesta di conferma da parte dell'utente; in Windows 95 l'associazione era la medesima, con la differenza che non veniva posta nessuna domanda, ed era quindi una potenziale causa d'errori.

Posizione dei file del registro[modifica | modifica wikitesto]

A seconda della versione di Windows, il registro di sistema è memorizzato in uno o più file in posizioni note, ma sempre sullo stesso computer; l'unica eccezione, solo da Windows NT in poi, è data dal file del profilo privato di ogni utente che, per via della caratteristica dei profili remoti, può risiedere su una macchina (ospite del profilo) raggiungibile via rete.

Windows 3.0[modifica | modifica wikitesto]

Il registro, in questa sua prima versione, è semplicemente un'astrazione delle sezioni [Extensions] ed [Embedding] del file WIN.INI.

Windows 3.1x[modifica | modifica wikitesto]

In queste versioni di Windows, il registro risiede fisicamente nel file REG.DAT, ubicato nella cartella d'installazione di Windows (tipicamente C:\WINDOWS).

Windows 9x[modifica | modifica wikitesto]

In Windows 95 e Windows 98 il registro è memorizzato nei file USER.DAT e SYSTEM.DAT, posizionati nella cartella d'installazione di Windows (tipicamente C:\WINDOWS).

Windows ME[modifica | modifica wikitesto]

La collocazione del registro in Windows ME è identica ai suoi predecessori Windows 9x, con l'aggiunta del file CLASSES.DAT.

Windows NT/2000/XP[modifica | modifica wikitesto]

In Windows NT e nei sistemi operativi da esso derivati (2000, XP e Server 2003, il registro è composto da alcuni file posizionati in %SystemRoot%\System32\Config (tutti senza estensione):

  • SAM
  • Security
  • Software
  • System
  • Default
  • UserDiff

Inoltre, nella cartella di ogni profilo utente, è memorizzata una versione personalizzata di questi file:

  • NTUser.dat

Criteri di gruppo[modifica | modifica wikitesto]

Dall'avvento di Windows 95, gli amministratori di sistema possono affiancare al registro degli speciali file, detti di criteri di gruppo, che permettono di ridurre o inibire l'accesso a specifiche chiavi del registro (ad esempio, per rendere impossibile la modifica delle impostazioni grafiche della shell); l'estensione per questi file è.POL. I criteri di gruppo possono agire su di un singolo utente, o su un gruppo di utenti; l'efficacia è garantita dall'applicazione indiretta al registro, che impedisce quindi agli utenti che subiscono le restrizioni di modificare i valori specificati nei criteri. I file di criteri vengono tipicamente distribuiti sui computer dall'amministratore attraverso la rete locale, ma possono anche essere piazzati direttamente sui computer interessati.

Per creare e modificare file di criteri di gruppo, Microsoft fornisce un programma per Windows 9x, POLEDIT.EXE; per i sistemi derivati da Windows NT, è disponibile invece un plugin MMC, che tuttavia è disabilitato in Windows XP Home. Il plugin MMC richiede di essere eseguito da un utente con privilegi amministrativi; può agire sul registro della macchina in locale come anche connettersi ad un registro di sistema remoto ed operare su quello. Le impostazioni che il programma permette di modificare sono memorizzate in file.ADM; la shell di Windows, EXPLORER.EXE, include uno di questi file. I file.ADM sono semplici file di testo, con un supporto alla localizzazione dato dal raggruppamento di tutti i testi in un unico punto.

Punti di forza del concetto di registro[modifica | modifica wikitesto]

Rispetto ai classici file INI, il registro offre pochissimi vantaggi:

  • l'omogeneità del formato e delle restrizioni permettono di eseguire gli script senza bisogno di modificarli per ogni applicazione.
  • Trattandosi di un ristretto numero di file in posizioni note, ci sono i presupposti per una buona semplicità di backup.

Si potrebbe pensare che un vantaggio stia nel fatto che il registro mantiene le impostazioni a livello di computer separate dalle impostazioni individuali degli utenti. In verità lo era per le vecchie versioni di Linux risalenti al XX secolo, mentre da quando anche Windows utilizza le convenzioni dei sistemi operativi stile Unix (cartelle distinte per utente, contenenti i file di configurazione di tutti i programmi usati dall'utente), lo svantaggio va a cadere.

Si potrebbe supporre che la presenza di un registro centralizzato e di criteri di gruppo favoriscano la gestione centralizzata da parte degli amministratori; ma in verità lo stesso è ottenibile in maniera ancora più semplice e intuitiva con un sistema a file (è sufficiente copiarli nella cartella home dell'utente di sistema).

Si potrebbe, infine, pensare che la presenza di un API che consenta un controllo remoto possa rappresentare un vantaggio: in verità è vero l'esatto contrario, perché si aggiunge un ulteriore livello di astrazione del tutto inutile. Con dei semplici file il controllo remoto delle impostazioni sarebbe possibile con l'utilizzo dei classici protocollo di gestione dei file remoti (ad esempio: FTP).

Punti deboli del concetto di registro[modifica | modifica wikitesto]

Il registro non è la panacea a tutti i problemi di configurazione del software. In particolare:

  • Un registro danneggiato è in grado di rendere il sistema operativo inutilizzabile, a volte offrendo come unica via d'uscita la reinstallazione completa del sistema.
  • Per manipolare il registro, i programmi devono utilizzare le apposite funzioni dell'API di Windows, mentre un normale file testuale di configurazione può essere elaborato con le normali funzioni di manipolazione dei file. Questo obbligo riguarda anche gli utenti, che per accedere al registro devono utilizzare il programma REGEDIT.EXE, mentre per i comuni file di configurazione è sufficiente un qualsiasi applicativo di elaborazione testi.
  • Nei file INI spesso sono presenti dei commenti per spiegare in che maniera l'utente può agire per variare la configurazione delle applicazioni; il registro, per contro, non prevede commenti.
  • A causa del fatto che i vari file che costituiscono il registro sono sempre mantenuti aperti (per motivi di prestazioni) dal sistema operativo, il loro backup è possibile solo mediante appositi strumenti, come NTBACKUP.EXE.
  • Il ripristino parziale del registro è pressoché impossibile, almeno per alcuni gruppi di chiavi, poiché non è facile estrarre porzioni di registro dai backup.
  • Dal momento che ogni applicazione aggiunge qualcosa al registro, se il relativo programma di disinstallazione "dimentica" di fare pulizia (completamente o in parte), il registro tende a crescere di dimensioni con l'aumentare del numero di programmi che sono stati installati nel sistema, anche se successivamente rimossi. Un registro di dimensioni eccessive causa un generale calo di prestazioni dell'intero sistema.

Alternative al registro in altri sistemi operativi[modifica | modifica wikitesto]

L'esigenza di mantenere i file di configurazione separati è sentita anche in altri sistemi operativi, ma l'approccio di solito consiste nel raggruppamento degli stessi in apposite cartelle del file system, come la cartella Preferences in Mac OS, o la cartella /etc e le cartelle nascoste (quelle cioè il cui nome inizia con un punto) all'interno della home nei sistemi tipo Unix. Con questo approccio, la protezione dei vari gruppi di impostazioni si appoggia direttamente ai permessi d'accesso del file system ospite; inoltre, l'unico evento in grado di minare la stabilità di questo sistema è la corruzione del file system, che avrebbe comunque delle gravi ripercussioni sull'intero sistema. La suddivisione in più parti inoltre permette agli utenti di non dover manipolare file cruciali per il sistema operativo solo per modificare le preferenze di un programma; gli interventi su file di impostazioni importanti rimangono così un evento poco frequente.

Problemi con i sistemi operativi Windows 9x e pulizia del registro[modifica | modifica wikitesto]

Nei computer con Windows 9x, un'installazione del sistema operativo troppo datata può essere soggetta a notevoli rallentamenti dovuti ad un'eccessiva dimensione del registro, che penalizza le prestazioni del sistema, in particolare all'avvio, e spesso è anche causa di instabilità del sistema stesso; la frequenza di questa circostanza ha portato all'associazione "registro → instabilità", che risulta tuttavia meno fondata per i sistemi operativi basati su Windows NT. Esistono comunque dei programmi in grado di pulire il registro (anche se va tenuto in considerazione che l'errata modifica del registro di sistema tramite l'editor o un altro metodo può causare seri problemi, che potrebbero richiedere la reinstallazione del sistema operativo).Quindi se non siete pratici su queste operazioni non svolgete questo lavoro da soli e richiedete assistenza a chi di dovuto (tecnico pc).

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]