Чтение реестра и запись в него с использованием пространства имен Microsoft.Win32
Обновлен: Ноябрь 2007
Несмотря на то, что возможностей объекта 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 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