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


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

Хотя My.Computer.Registry должен учитывать ваши основные потребности для работы с реестром, вы также можете использовать классы Registry и RegistryKey в пространстве имен в .NET.

Ключи в классе реестра

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

Ключ Описание
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

См. также