Чтение реестра и запись в него с использованием пространства имен Microsoft.Win32 (Visual Basic)
Хотя My.Computer.Registry
должно хватать для удовлетворения основных потребностей при программировании в реестре, можно также использовать классы Registry и RegistryKey в пространстве имен Microsoft.Win32 .NET.
Разделы в классе Registry
Класс Registry предоставляет основные разделы реестра, которые можно использовать для доступа к подразделам и их значениям. Сами основные разделы доступны только для чтения. В следующей таблице перечислены и описаны семь разделов, предоставляемых классом Registry.
Ключ | Description |
---|---|
ClassesRoot | Определяет типы документов и свойства, связанные с этими типами. |
CurrentConfig | Содержит сведения о конфигурации оборудования, не относящиеся к пользователю. |
CurrentUser | Содержит сведения о текущих настройках пользователя, таких как переменные среды. |
DynData | Содержит динамические данные реестра, например, используемые драйверами виртуальных устройств. |
LocalMachine | Включает в себя пять подразделов (оборудование, SAM, безопасность, программное обеспечение и система), содержащих данные о конфигурации для локального компьютера. |
PerformanceData | Содержит сведения о производительности для компонентов программного обеспечения. |
Users | Содержит сведения о настройках пользователя по умолчанию. |
Внимание
Безопаснее записывать данные для текущего пользователя (CurrentUser), чем для локального компьютера (LocalMachine). Условие, которое обычно называют "захватом", возникает, если создаваемый вами раздел уже был создан другим, возможно вредоносным, процессом. Чтобы предотвратить это, используйте такой метод, как GetValue, который возвращает Nothing
, если ключ еще не существует.
Чтение значения из реестра
В следующем коде показано, как считать строку из раздела 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
Следующий код считывает, увеличивает, а затем записывает строку в раздел 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