Condividi tramite


Lettura e scrittura nel Registro di sistema tramite lo spazio dei nomi Microsoft.Win32 (Visual Basic)

Anche se My.Computer.Registry deve soddisfare le esigenze di base quando si esegue la programmazione nel Registro di sistema, è anche possibile usare le Registry classi e RegistryKey nello Microsoft.Win32 spazio dei nomi di .NET.

Chiavi nella classe del Registro di sistema

La Registry classe fornisce le chiavi del Registro di sistema di base che possono essere usate per accedere alle sottochiavi e ai relativi valori. Le chiavi di base sono di sola lettura. Nella tabella seguente sono elencate e descritte le sette chiavi esposte dalla Registry classe .

chiave Descrizione
ClassesRoot Definisce i tipi di documenti e le proprietà associate a tali tipi.
CurrentConfig Contiene informazioni di configurazione hardware non specifiche dell'utente.
CurrentUser Contiene informazioni sulle preferenze utente correnti, ad esempio le variabili di ambiente.
DynData Contiene dati dinamici del Registro di sistema, ad esempio quelli usati dai driver di dispositivo virtuale.
LocalMachine Contiene cinque sottochiavi (Hardware, SAM, Sicurezza, Software e Sistema) che contengono i dati di configurazione per il computer locale.
PerformanceData Contiene informazioni sulle prestazioni per i componenti software.
Users Contiene informazioni sulle preferenze utente predefinite.

Importante

È più sicuro scrivere dati nell'utente corrente (CurrentUser) rispetto al computer locale (LocalMachine). Una condizione in genere nota come "squatting" si verifica quando la chiave che si sta creando è stata creata in precedenza da un altro processo, possibilmente dannoso. Per evitare che ciò si verifichi, usare un metodo, ad esempio GetValue, che restituisce Nothing se la chiave non esiste già.

Lettura di un valore dal Registro di sistema

Nel codice seguente viene illustrato 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

Vedere anche