Leggere e scrivere nel Windows Registry
Il Registry di windows e' un database di sistema, organizzato secondo
una struttura gerarchica. Al suo interno raggruppa diversi tipi di
informazioni, che possono essere suddivisi cosi':
-
HKEY_LOCAL_MACHINE - Continene informazioni sulla
configurazione di windows, relative alla macchina dove e' installato.
-
HKEY_CURRENT_CONFIG - Continene informazioni sulla
configurazione del hardware che non riguardano l'utenza.
-
HKEY_USERS - Contiene informazioni sulle preferenze di default
delle utenze.
-
HKEY_CURRENT_USER - Raccoglie informazioni sull'utente che sta
usando il sistema.
-
HKEY_CLASSES_ROOT - Definisce i tipi di documenti e le
proprieta' associate ad essi.
-
HKEY_DYN_DATA - Contiene dati dinamici per la gestione del
sistema come ad esempio i dati usati dai driver virtuali.
-
HKEY_PERFORMANCE_DATA - Raccoglie dati sulle prestazioni,
forniti dai componenti software.
Attenzione!! Un uso incorretto
del Registry puo' causare seri problemi al sistema e richiedere la
reinstallazione dello stesso. Usate le informazioni riportate di seguito con
cautela e a vostro rischio.
Alle sette categorie di informazioni riportate precedentemente,
vengono associate delle Key (chiavi) con le quali possiamo
accedervi. Ogni gruppo contiene dei sottogruppi, detti SubKey,
che, a loro volta, possono contenere altre SubKey. Una SubKey
ospita uno o piu' valori che costituiscono le informazioni vere e proprie che
si vogliono memorizzare. I valori sono indentificati da un Nome, un Tipo di
dato ed il valore.
E' pratica comune, da parte delle applicazioni, di usare il Registry
per memorizzare dati di configurazione. Presentiamo un esempio che mostra come
usare le classi Registry e RegistryKey per
salvare e caricare alcune impostazioni di un'applicazione.
La classe Registry fornisce sette campi pubblici di tipo RegistryKey,
uno per ciascuna categoria di informazioni.
-
Registry.LocalMachine - individua: HKEY_LOCAL_MACHINE
-
Registry.CurrentConfig - individua: HKEY_CURRENT_CONFIG
-
Registry.Users - individua: HKEY_USERS
-
Registry.CurrentUser - individua: HKEY_CURRENT_USER
-
Registry.ClassesRoot - individua: HKEY_CLASSES_ROOT
-
Registry.DynData - individua: HKEY_DYN_DATA
-
Registry.PerformanceData - individua: HKEY_PERFORMANCE_DATA
La classe RegistryKey ci permette di accedere alle varie SubKey
e relativi valori. Con essa possiamo creare nuove chiavi, aggiungere,
cancellare valori, etc.
L'esempio mostra un Form che contiene una sola TextBox chiamata txtMessaggio.
Ogni volta che il form e' lanciato, carica le impostazioni memorizzate nella
precedente esecuzione, in modo da posizionarsi nello stesso punto dello schermo
in cui e' stato chiuso, esibendo le medesime dimensioni, mostrando l'ultimo
messaggio scritto nella TextBox.
Imports Microsoft.Win32
In genere, se vogliamo personalizzare le applicazioni in base all'utente,
memorizziamo le informazioni relative alle impostazioni nella seguente chiave: HKEY_CURRENT_USER\Software\.
Per la nostra applicazione, ci riserveremo una sottochiave chiamata Registry_Example,
cosicche' il percorso completo sara' HKEY_CURRENT_USER\Software\Registry_Example.
Quando vogliamo accedere ad una chiave dobbiamo ottenere un oggetto RegistryKey.
Lo otteniamo con il metodo OpenSubKey. In SalvaImpostazioni,
OpenSubKey ci serve a testare se l'entry Registry_Example e' gia' esiste, se
non esiste la funzione ci restituira' Nothing e noi creeremo
la chiave con CreateSubKey. Successivamente, con il metodo
SetValue, salveremo, nella chiave, i valori delle proprieta' che
desideriamo. La coppia di parametri indica il Nome del valore ed il valore da
attribuirgli. Terminata di usare, la chiave regKey va chiusa con Close.
Private Sub SalvaImpostazioni()
Dim regKey As RegistryKey
regKey = Registry.CurrentUser.OpenSubKey( _
"Software\Registry_Example", True)
If IsNothing(regKey) Then
regKey = Registry.CurrentUser.CreateSubKey( _
"Software\Registry_Example")
End If
regKey.SetValue("Messaggio", txtMessaggio.Text)
regKey.SetValue("X", Me.Left)
regKey.SetValue("Y", Me.Top)
regKey.SetValue("Larghezza", Me.Width)
regKey.SetValue("Altezza", Me.Height)
regKey.Close()
End Sub
Quando vogliamo recuperare le impostazioni dal registro, riotteniamo l'oggetto
RegistrKey (regKey) con OpenSubKey e quindi invochiamo su di lui il metodo GetValue
fornendogli il Nome del valore da recuperare. Se il valore non dovesse esistere
ci verrebbe restituito Nothing. Poiche' l'oggetto restituito
(obj) e' generico, dovremo convertirlo al suo tipo specifico con CType
.
Private Sub CaricaImpostazioni()
Dim regKey As RegistryKey
Dim obj As Object
regKey = Registry.CurrentUser.OpenSubKey( _
"Software\Registry_Example")
If regKey Is Nothing Then Exit Sub
obj = regKey.GetValue("Messaggio")
If Not obj Is Nothing Then
txtMessaggio.Text = CType(obj, String)
End If
obj = regKey.GetValue("X")
If Not obj Is Nothing Then
Me.Left = CType(obj, Integer)
End If
obj = regKey.GetValue("Y")
If Not obj Is Nothing Then
Me.Top = CType(obj, Integer)
End If
obj = regKey.GetValue("Larghezza")
If Not obj Is Nothing Then
Me.Width = CType(obj, Integer)
End If
obj = regKey.GetValue("Altezza")
If Not obj Is Nothing Then
Me.Height = CType(obj, Integer)
End If
regKey.Close()
End Sub
Carichiamo le informazioni prima che il form venga visualizzato (Form_Load) e
le salviamo durante la chiusura (Form_Closing)
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
CaricaImpostazioni()
End Sub
Private Sub Form1_Closing(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles MyBase.Closing
SalvaImpostazioni()
End Sub
Ultimo aggiornamento 13/01/2004
|