Чтение реестра и запись в него с использованием пространства имен Microsoft.Win32 (Visual Basic)
Несмотря на то, что возможностей объекта My.Computer.Registry должно быть достаточно для программирования основных задач работы с реестром, можно также использовать классы Registry и RegistryKey из пространства имен Microsoft.Win32 .NET Framework.
Разделы в классе реестра
Класс Registry содержит основные разделы реестра, которые можно использовать для доступа к подразделам и их значениям. Основные разделы доступны только для чтения. В следующей таблице описаны семь разделов, представленных в классе Registry.
Ключ |
Описание |
---|---|
Описывает типы документов и свойства, связанные с этими типами. |
|
Содержит данные о конфигурации оборудования, не связанные с определенным пользователем. |
|
Содержит данные о текущих настройках пользователя, таких как переменные среды. |
|
Содержит динамические данные реестра, используемые, например, виртуальными драйверами устройств. |
|
Включает пять подразделов (Hardware, SAM, Security, Software, System), которые содержат данные о конфигурации локального компьютера. |
|
Содержит данные о производительности для компонентов программного обеспечения. |
|
Содержит данные о настройках пользователя по умолчанию. |
![]() |
---|
С точки зрения безопасности рекомендуется записывать данные в раздел для текущего пользователя (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
См. также
Ссылки
Оператор Try... Catch... Finally (Visual Basic)
Основные понятия
Безопасность и реестр (Visual Basic)