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


Чтение реестра и запись в него с использованием пространства имен 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

См. также