Lettura e scrittura nel Registro di sistema mediante lo spazio dei nomi Microsoft.Win32 (Visual Basic)
My.Computer.Registry
dovrebbe essere in grado di soddisfare le esigenze di base della programmazione con il Registro di sistema, ma è possibile usare anche le classi Registry e RegistryKey dello spazio dei nomi Microsoft.Win32 di .NET.
Chiavi nella classe Registry
La classe Registry include le chiavi di base del Registro di sistema che è possibile usare per accedere alle sottochiavi e ai relativi valori. Le chiavi di base sono di sola lettura. La tabella seguente elenca e descrive le sette chiavi esposte dalla classe Registry.
Chiave | Descrizione |
---|---|
ClassesRoot | Definisce i tipi di documento e le relative proprietà. |
CurrentConfig | Contiene informazioni non specifiche dell'utente sulla configurazione hardware. |
CurrentUser | Contiene informazioni sulle preferenze dell'utente corrente, ad esempio le variabili di ambiente. |
DynData | Contiene i dati dinamici del Registro di sistema, ad esempio quelli usati dai driver delle periferiche virtuali. |
LocalMachine | Contiene cinque sottochiavi (Hardware, SAM, Security, Software e System) in cui sono disponibili i dati di configurazione relativi al computer locale. |
PerformanceData | Contiene informazioni sulle prestazioni per i componenti software. |
Users | Contiene informazioni sulle preferenze predefinite degli utenti. |
Importante
È più sicuro scrivere dati per l'utente corrente (CurrentUser) che non per il computer locale (LocalMachine). Quando la chiave che si sta creando è stata precedentemente creata da un altro processo, probabilmente dannoso, si verifica una condizione comunemente definita "squatting". Per evitare che si verifichi tale situazione, usare un metodo, ad esempio GetValue, che restituisce Nothing
se la chiave non esiste già.
Lettura di un valore dal Registro di sistema
Il codice seguente illustra come leggere una stringa da HKEY_CURRENT_USER.
Dim regVersion As Microsoft.Win32.RegistryKey
Dim keyValue = "Software\\Microsoft\\TestApp\\1.0"
regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(keyValue, False)
Dim intVersion As Integer = 0
If regVersion IsNot Nothing Then
intVersion = regVersion.GetValue("Version", 0)
regVersion.Close()
End If
Il codice seguente legge, incrementa e quindi scrive una stringa in HKEY_CURRENT_USER.
Dim regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
"SOFTWARE\\Microsoft\\TestApp\\1.0", True)
If regVersion Is Nothing Then
' Key doesn't exist; create it.
regVersion = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(
"SOFTWARE\\Microsoft\\TestApp\\1.0")
End If
Dim intVersion As Integer = 0
If regVersion IsNot Nothing Then
intVersion = regVersion.GetValue("Version", 0)
intVersion = intVersion + 1
regVersion.SetValue("Version", intVersion)
regVersion.Close()
End If