Odczytywanie z oraz zapisywanie do rejestru za pomocą przestrzeni nazw Microsoft.Win32 (Visual Basic)
Chociaż My.Computer.Registry
należy uwzględnić podstawowe potrzeby podczas programowania w rejestrze, można również użyć Registry klas i RegistryKey w Microsoft.Win32 przestrzeni nazw platformy .NET.
Klucze w klasie rejestru
Klasa Registry dostarcza podstawowe klucze rejestru, które mogą służyć do uzyskiwania dostępu do podklucze i ich wartości. Same klucze podstawowe są tylko do odczytu. W poniższej tabeli wymieniono i opisano siedem kluczy uwidocznionych przez klasę Registry .
Klawisz | Opis |
---|---|
ClassesRoot | Definiuje typy dokumentów i właściwości skojarzonych z tymi typami. |
CurrentConfig | Zawiera informacje o konfiguracji sprzętu, które nie są specyficzne dla użytkownika. |
CurrentUser | Zawiera informacje o bieżących preferencjach użytkownika, takich jak zmienne środowiskowe. |
DynData | Zawiera dane rejestru dynamicznego, takie jak używane przez sterowniki urządzeń wirtualnych. |
LocalMachine | Zawiera pięć podklucza (Sprzęt, SAM, Zabezpieczenia, Oprogramowanie i System), które przechowują dane konfiguracji dla komputera lokalnego. |
PerformanceData | Zawiera informacje o wydajności składników oprogramowania. |
Users | Zawiera informacje o domyślnych preferencjach użytkownika. |
Ważne
Bezpieczniejszy jest zapis danych do bieżącego użytkownika (CurrentUser) niż do komputera lokalnego (LocalMachine). Warunek, który jest zwykle określany jako "kucanie", występuje, gdy tworzony klucz został wcześniej utworzony przez inny, prawdopodobnie złośliwy, proces. Aby zapobiec wystąpieniu tego błędu, użyj metody, takiej jak GetValue, która zwraca Nothing
wartość , jeśli klucz jeszcze nie istnieje.
Odczytywanie wartości z rejestru
Poniższy kod pokazuje, jak odczytać ciąg 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
Poniższy kod odczytuje, zwiększa, a następnie zapisuje ciąg w celu 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