Läsa från och skriva till registret med hjälp av Microsoft.Win32-namnområdet (Visual Basic)

Även om My.Computer.Registry bör täcka dina grundläggande behov när du programmerar mot registret, kan du också använda Registry klasserna och RegistryKey i Microsoft.Win32 namnområdet för .NET.

Nycklar i registerklassen

Klassen Registry tillhandahåller de basregisternycklar som kan användas för att komma åt undernycklar och deras värden. Själva basnycklarna är skrivskyddade. I följande tabell visas och beskrivs de sju nycklar som exponeras av Registry klassen.

Nyckel Beskrivning
ClassesRoot Definierar typerna av dokument och de egenskaper som är associerade med dessa typer.
CurrentConfig Innehåller information om maskinvarukonfiguration som inte är användarspecifik.
CurrentUser Innehåller information om aktuella användarinställningar, till exempel miljövariabler.
DynData Innehåller dynamiska registerdata, till exempel de som används av virtuella enhetsdrivrutiner.
LocalMachine Innehåller fem undernycklar (maskinvara, SAM, säkerhet, programvara och system) som innehåller konfigurationsdata för den lokala datorn.
PerformanceData Innehåller prestandainformation för programvarukomponenter.
Users Innehåller information om standardinställningarna för användare.

Viktigt!

Det är säkrare att skriva data till den aktuella användaren (CurrentUser) än till den lokala datorn (LocalMachine). En situation som vanligtvis kallas "skvattning" uppstår när nyckeln du skapar tidigare har skapats av en annan, möjligen skadlig, process. Om du vill förhindra att detta inträffar använder du en metod, till exempel , som GetValuereturnerar Nothing om nyckeln inte redan finns.

Läsa ett värde från registret

Följande kod visar hur du läser en sträng från 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

Följande kod läser, inkrementerar och skriver sedan en sträng till 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

Se även