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

Метод CreateSubKey объекта My.Computer.Registry можно использовать для создания раздела реестра.

Процедура

Создание раздела реестра

  • Используйте метод CreateSubKey, задав куст, в который нужно поместить раздел, а также имя раздела. Параметр Subkey нечувствителен к регистру. В этом примере создается раздел реестра MyTestKey в HKEY_CURRENT_USER.

    My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
    

Создание раздела реестра и задание его значения

  1. Используйте метод CreateSubkey, задав куст, в который нужно поместить раздел, а также имя раздела. В этом примере создается раздел реестра MyTestKey в HKEY_CURRENT_USER.

    My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
    
  2. Задайте значение с помощью метода 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. Разработчики должны искать альтернативные средства выполнения задач безопасности.

См. также