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


Практическое руководство. Чтение значения из раздела реестра в Visual Basic

Для чтения значений из реестра Windows можно использовать метод GetValue объекта My.Computer.Registry.

Если раздел (в данном случае "Software\MyApp") не существует, возникает исключение. Если ValueName (в данном случае "Name") не существует, возвращается Nothing.

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

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

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

  • Для чтения значения из раздела реестра используйте метод GetValue, указав путь и имя. В следующем примере считывается значение Name из раздела HKEY_CURRENT_USER\Software\MyApp, после чего оно отображается в окне сообщения.

    Dim readValue = My.Computer.Registry.GetValue(
        "HKEY_CURRENT_USER\Software\MyApp", "Name", Nothing)
    MsgBox("The value is " & readValue)
    

Этот пример кода также доступен в качестве фрагмента кода IntelliSense. В средство выбора фрагмента кода он находится в реестре операционной системы > Windows. Для получения дополнительной информации см. Code Snippets.

Определение наличия значения в разделе реестра

  • Чтобы получить значение, используйте метод GetValue. В следующем коде проверяется наличие значения и возвращается сообщение, если значение отсутствует.

    If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\TestApp",
    "TestValue", Nothing) Is Nothing Then
        MsgBox("Value does not exist.")
    End If
    

Отказоустойчивость

Реестр содержит разделы верхнего уровня или корневые разделы, которые используются для хранения данных. Например, корневой раздел HKEY_LOCAL_MACHINE используется для хранения параметров уровня компьютера, используемых всеми пользователями, тогда как HKEY_CURRENT_USER используется для хранения данных для отдельного пользователя.

При следующих условиях возможно возникновение исключения:

  • Имя раздела — Nothing (ArgumentNullException).

  • У пользователя нет разрешений на создание разделов реестра (SecurityException).

  • Имя ключа превышает ограничение в 255 символов (ArgumentException).

Безопасность .NET Framework

Для запуска этого процесса сборке нужен уровень привилегий, предоставляемый классом RegistryPermission. Если процесс выполняется в контексте с частичным доверием, он может сгенерировать исключение из-за недостатка привилегий. Аналогичным образом пользователь должен иметь правильные ACL для создания и записи параметров. Например, локальное приложение, имеющее разрешение на доступ к коду, может не иметь разрешения операционной системы. Дополнительные сведения см. в разделе Code Access Security Basics.

Примечание.

Безопасность доступа к коду (CAS) устарела во всех версиях платформа .NET Framework и .NET. Последние версии .NET не учитывают заметки CAS и создают ошибки, если используются API, связанные с CAS. Разработчики должны искать альтернативные средства выполнения задач безопасности.

См. также