Č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