Sdílet prostřednictvím


Čtení z registru a zápis do registru využitím oboru názvů Microsoft.Win32 (Visual Basic)

I když by My.Computer.Registry měl splnit vaše základní potřeby při práci s registrem, můžete také použít třídy Registry a RegistryKey v rámci oboru názvů .NET.

Klíče ve třídě Registry

Třída Registry poskytuje základní klíče registru, které lze použít pro přístup k podklíčům a jejich hodnotám. Samotné základní klíče jsou jen pro čtení. Následující tabulka uvádí a popisuje sedm klíčů vystavených Registry třídou.

Klíč Popis
ClassesRoot Definuje typy dokumentů a vlastnosti přidružené k těmto typům.
CurrentConfig Obsahuje informace o konfiguraci hardwaru, které nejsou specifické pro uživatele.
CurrentUser Obsahuje informace o aktuálních předvolbách uživatele, jako jsou například systémové proměnné.
DynData Obsahuje dynamická data registru, jako jsou například data používaná ovladači virtuálních zařízení.
LocalMachine Obsahuje pět podklíčů (Hardware, SAM, Security, Software a System), které obsahují konfigurační data místního počítače.
PerformanceData Obsahuje informace o výkonu softwarových komponent.
Users Obsahuje informace o výchozích uživatelských předvolbách.

Důležité

Je bezpečnější zapisovat data aktuálnímu uživateli (CurrentUser) než do místního počítače (LocalMachine). Podmínka, která se obvykle označuje jako "squatting", nastane, když klíč, který vytváříte, již dříve vytvořil jiný, potenciálně škodlivý proces. Chcete-li tomu zabránit, použijte metodu, například GetValue, která vrátí Nothing , pokud klíč ještě neexistuje.

Čtení hodnoty z registru

Následující kód ukazuje, jak číst řetězec z 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

Následující kód načte, inkrementuje a poté zapíše řetězec do 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

Viz také