Как я могу предоставить свой доступ к приложению ASP.NET MVC для доступа к разделу реестра?

Я прочитал другие сообщения о том, как это сделать, но безрезультатно. Когда я развертываю свое приложение на сервере (2008), во время выполнения я получаю следующее исключение:

Access to the registry key 'HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\TeamFoundation\Servers' is denied.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
Exception Details: System.UnauthorizedAccessException: Access to the registry key 'HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\TeamFoundation\Servers' is denied. 
ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate="true">, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user. 
</identity>

Чтобы предоставить ASP.NET доступ к файлу, щелкните правой кнопкой мыши файл в проводнике, выберите "Свойства" и выберите вкладку "Безопасность". Нажмите "Добавить", чтобы добавить соответствующего пользователя или группу. Выделите учетную запись ASP.NET и установите флажки для нужного доступа.

Таким образом, ошибка кажется очень описательной. Я открыл regedit и нажал правой кнопкой мыши на KEY (HKEY_CURRENT_USER\Software\Microsoft) → Разрешения → Добавил пользователя NETWORK SERIVCE и предоставил FULL Control.

Я предположил, что это был пользователь, который ASP.NET запускал для доступа к реестру.

Затем я попытался отключить "Включить наследуемые разрешения от этого родителя объекта".

Это также не сработало.

Внутри диспетчера IIS в настройках проверки подлинности приложения я установил пользователь "анонимной аутентификации", который входит в группу "Администратор".

Кажется, что ничего не работает.

Как я могу решить эту проблему? Это внутренний инструмент, работающий в нашей локальной сети, поэтому на этом этапе я не очень сильно обеспокоен разрешениями безопасности. Как я могу предоставить соответствующие привилегии?

Спасибо!

2 ответа

Трудно устранить неполадки, не зная, чего пытается выполнить ваше веб-приложение. Однако я предполагаю, что это приложение для веб-баз данных, что означает, что вы создали db для своей сети. Во-первых, в вашем Web.config'connectionString 'попробуйте использовать имя пользователя и пароль, которые вы использовали для входа в SQL Server Management. Не используйте вход в Windows. Во-вторых, попробуйте запустить приложение с помощью функциональной клавиши F5. Это запустит встроенный сервер, который поставляется с Visual Studio 2008. Это не требует локального IIS.

Если у вас еще проблемы, отправьте сообщение или отправьте мне свой Web.config. Смотрите, могу ли я помочь.


Мне пришлось установить идентификатор пула приложений в "LocalSystem" для этого приложения. Это позволило моему приложению получить достаточно привилегий для чтения реестра.

licensed under cc by-sa 3.0 with attribution.