Включить доступ к реестру в приложении WinForms на C # .Net - PullRequest
0 голосов
/ 16 ноября 2010

По умолчанию: реестр отключен, поэтому я получаю «редактирование реестра было отключено администратором». В моем приложении я хочу разрешить пользователям доступ к реестру при запуске приложения и запретить его при остановке приложения.Ждем ваших советов по этому вопросу.

Ответы [ 4 ]

1 голос
/ 16 ноября 2010

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

Самый простой способ добиться этого - написать службу Windows .net, которая работает с более высокими привилегиями. Эта служба все еще может контролировать, какие параметры реестра разрешено изменять. Таким образом, ваши пользователи запускают ваше приложение Winforms, которое связывается с вашей службой для внесения реальных изменений в реестр.

Для этого пользователю (или операциям) необходимо установить службу на машине с правами администратора.

0 голосов
/ 16 ноября 2010

Использовать атрибут сборки RegistryPermissionAttribute() над пространством имен

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, ViewAndModify = "HKEY_CURRENT_USER")]
//SecurityAction is enum having different security parameters
0 голосов
/ 16 ноября 2010

Я уверен, что ваш администратор отключил доступ к Regedit.exe с помощью параметра групповой политики "Запретить доступ к инструментам редактирования реестра" & mdash; вот почему вы получаете сообщение «Редактирование реестра было отключено вашим администратором».

Это не влияет на доступ к реестру . Ваше приложение может по-прежнему обращаться к реестру и изменять его (ну, по крайней мере, HKCU), используя, например, класс RegistryKey .

0 голосов
/ 16 ноября 2010

Я предполагаю, что ваше приложение работает на Vista или Win7, и у вас нет доступа к HKEY_LOCAL_MACHINE.Чтобы отредактировать значения реестра в этой области, вам нужно добавить манифест в свой проект и добавить в него следующую строку:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
...