Поделиться через


Чтение реестра и запись в него с использованием пространства имен Microsoft.Win32 (Visual Basic)

Несмотря на то, что возможностей объекта My.Computer.Registry должно быть достаточно для программирования основных задач работы с реестром, можно также использовать классы Registry и RegistryKey из пространства имен Microsoft.Win32 .NET Framework.

Разделы в классе реестра

Класс Registry содержит основные разделы реестра, которые можно использовать для доступа к подразделам и их значениям. Основные разделы доступны только для чтения. В следующей таблице описаны семь разделов, представленных в классе Registry.

Ключ

Описание

ClassesRoot

Описывает типы документов и свойства, связанные с этими типами.

CurrentConfig

Содержит данные о конфигурации оборудования, не связанные с определенным пользователем.

CurrentUser

Содержит данные о текущих настройках пользователя, таких как переменные среды.

DynData

Содержит динамические данные реестра, используемые, например, виртуальными драйверами устройств.

LocalMachine

Включает пять подразделов (Hardware, SAM, Security, Software, System), которые содержат данные о конфигурации локального компьютера.

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

См. также

Ссылки

Оператор Try... Catch... Finally (Visual Basic)

SystemException

ApplicationException

RegistryProxy

Основные понятия

Безопасность и реестр (Visual Basic)

Другие ресурсы

Чтение данных из реестра и запись в реестр (Visual Basic)