Sdílet prostřednictvím


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

I když My.Computer.Registry byste při programování v registru měli pokrýt své základní potřeby, můžete také použít Registry a RegistryKey třídy v Microsoft.Win32 oboru názvů rozhraní .NET.

Klíče ve třídě registru

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 uživatelských předvolbách, například proměnných prostředí.
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 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, zvýší a 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é