Практическое руководство. Чтение значения из раздела реестра в 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. Разработчики должны искать альтернативные средства выполнения задач безопасности.