Как создать раздел реестра, к которому может получить доступ любой пользователь, любое приложение в C #? - PullRequest
0 голосов
/ 30 октября 2011

Я создаю раздел реестра следующим образом:

Key = Registry.CurrentUser.CreateSubKey("Mykey");

Затем откройте его, когда мое приложение будет запущено во второй раз:

Key = Registry.CurrentUser.OpenSubKey("Mykey");

Но мне было отказано в доступе при попытке создать его подраздел:

Subkey = Key.CreateSubKey("Mysubkey"); <-- Runtime error here

Любое предложение, почему? Я полагаю, это потому, что я не устанавливал разрешения для «Mykey» во время его создания. Но я просто не знаю, как установить эти разрешения.

Ответы [ 2 ]

1 голос
/ 30 октября 2011

Вы можете настроить приложение на работу с полным доверием в свойствах проекта, а также подписать сборки с помощью ключа на вкладке «Подписывание» на странице свойств проекта. Наконец, запустите приложение от имени администратора и настройте его на запуск в режиме администратора, щелкнув правой кнопкой мыши значок запуска приложения и перейдя на вкладку «Совместимость» и установив флажок «Запускать эту программу от имени администратора». Для правильной работы реестра требуется полное доверие к приложению. Надеюсь это поможет.

РЕДАКТИРОВАТЬ: Или, как уже упоминалось, использовать локальные настройки.

0 голосов
/ 30 октября 2011

Ответ заключается в том, что разрешение 'запись' должно быть добавлено в 'OpenSubKey' как логическое значение 'true', например:

Key = Registry.CurrentUser.OpenSubKey("Mykey",true);

И это дает больше разрешений при выполнении CreateSubKey путем добавления параметра:

Key = Registry.CurrentUser.CreateSubKey("Mykey",
RegistryKeyPermissionCheck.ReadWriteSubTree);

Однако это не гарантирует, что ключ доступен любому пользователю, любому приложению. И еще, CreateSubKey также выполняет работу для OpenSubKey, когда ключ уже существует.

...