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


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

Обновлен: Ноябрь 2007

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

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

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

Раздел

Описание

ClassesRoot

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

CurrentConfig

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

CurrentUser

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

DynData

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

LocalMachine

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

PerformanceData

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

Users

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

8bf3xkta.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

С точки зрения безопасности рекомендуется записывать данные в раздел для текущего пользователя (CurrentUser), а не в раздел для локального компьютера (LocalMachine). Условие, которое обычно называют "захватом", происходит, когда создаваемый раздел уже был ранее создан другим, возможно вредоносным, процессом. Чтобы исключить такую ситуацию, следует воспользоваться методом, например GetValue, который возвращает Nothing, если раздел не существует.

Чтение значения из реестра

В следующем коде демонстрируется, как считать строку из раздела HKEY_CURRENT_USER.

Dim regVersion As Microsoft.Win32.RegistryKey
Dim keyValue As String
keyValue = "Software\\Microsoft\\TestApp\\1.0"
regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(keyValue, False)
Dim intVersion As Integer = 0
If (Not regVersion Is Nothing) Then
    intVersion = regVersion.GetValue("Version", 0)
    regVersion.Close()
End If

Следующий код считывает, увеличивает, а затем записывает строку в раздел реестра HKEY_CURRENT_USER.

Dim regVersion As Microsoft.Win32.RegistryKey
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 (Not regVersion Is Nothing) Then
    intVersion = regVersion.GetValue("Version", 0)
    intVersion = intVersion + 1
    regVersion.SetValue("Version", intVersion)
    regVersion.Close()
End If

См. также

Задачи

Устранение неполадок, связанных с управлением реестром

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

Обзор структурной обработки исключений в Visual Basic

Типичные операции с реестром

Безопасность и реестр

Чтение и запись в реестр с использованием объекта My

Ссылки

SystemException

ApplicationException

Объект My.Computer.Registry