Практическое руководство. Создание раздела реестра и задание его значения в Visual Basic
Метод CreateSubKey
объекта My.Computer.Registry
можно использовать для создания раздела реестра.
Процедура
Создание раздела реестра
Используйте метод
CreateSubKey
, задав куст, в который нужно поместить раздел, а также имя раздела. ПараметрSubkey
нечувствителен к регистру. В этом примере создается раздел реестраMyTestKey
в HKEY_CURRENT_USER.My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
Создание раздела реестра и задание его значения
Используйте метод
CreateSubkey
, задав куст, в который нужно поместить раздел, а также имя раздела. В этом примере создается раздел реестраMyTestKey
в HKEY_CURRENT_USER.My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
Задайте значение с помощью метода
SetValue
. В этом примере строке " MyTestKeyValue" присваивается значение "Это тестовое значение".My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyTestKey", "MyTestKeyValue", "This is a test value.")
Пример
В этом примере создается раздел реестра MyTestKey
в HKEY_CURRENT_USER, а затем строке This is a test value
задается значение MyTestKeyValue
.
My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
' Change MyTestKeyValue to This is a test value.
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyTestKey",
"MyTestKeyValue", "This is a test value.")
Отказоустойчивость
Проверьте структуру реестра и найдите подходящее место для ключа. Для этого можно, например, открыть раздел HKEY_CURRENT_USER\Software текущего пользователя и создать раздел с названием вашей компании. Затем добавьте в ключ компании значения реестра.
При чтении реестра из веб-приложения текущий пользователь зависит от проверки подлинности и олицетворения, реализованных в веб-приложении.
Безопаснее записывать данные в папку пользователя (CurrentUser), чем на локальный компьютер (LocalMachine).
Создавая значение реестра, необходимо решить, что делать, если это значение уже существует. Другой процесс (возможно, вредоносный) мог уже создать это значение и получить к нему доступ. Данные, добавленные в значение реестра, становятся доступными для другого процесса. Чтобы этого избежать, используйте метод GetValue. Он возвращает Nothing
, если данный раздел еще не существует.
Хранить секретные данные, например пароли, в реестре обычным текстом небезопасно, даже если раздел реестра защищен ACL (списком управления доступом).
При следующих условиях возможно возникновение исключения:
Имя раздела —
Nothing
(ArgumentNullException).У пользователя нет разрешения на создание разделов реестра (SecurityException).
Имя ключа превышает ограничение в 255 символов (ArgumentException).
Раздел является закрытым (IOException).
Раздел реестра доступен только для чтения (UnauthorizedAccessException).
Безопасность .NET Framework
Для запуска этого процесса сборке нужен уровень привилегий, предоставляемый классом RegistryPermission. Если процесс выполняется в контексте с частичным доверием, он может сгенерировать исключение из-за недостатка привилегий. Аналогичным образом пользователь должен иметь правильные ACL для создания и записи параметров. Например, локальное приложение, имеющее разрешение на доступ к коду, может не иметь разрешения операционной системы. Дополнительные сведения см. в разделе Code Access Security Basics.
Примечание.
Безопасность доступа к коду (CAS) устарела во всех версиях платформа .NET Framework и .NET. Последние версии .NET не учитывают заметки CAS и создают ошибки, если используются API, связанные с CAS. Разработчики должны искать альтернативные средства выполнения задач безопасности.