Консольное приложение .Net продолжает падать - PullRequest
0 голосов
/ 19 мая 2011

Я добавил файл манифеста с элементом

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

Я создал проект, и он продолжает падать, когда его запускает не администратор.

Необработанное исключение: System.Security.SecurityException: Запрос на разрешение типа 'System.Security.Permissions.RegistryPermission, mscorlib, Version = 2. 0.0.0, Культура = нейтральный, PublicKeyToken = b77a5c561934e089 'не удалось. at System.Security.CodeAccessSecurityEngine.Check (Требование объекта, StackCrawlMa rk & stackMark, Boolean isPermSet) в System.Security.CodeAccessPermission.Demand () в Microsoft.Win32.RegistryKey.CheckSubKeyReadPermission (String subkeyName) в Microsoft.Win32.RegistryKey.CheckOpenSubKeyPermission (String subkeyName, B oolean subKeyWritable) в Microsoft.Win32.RegistryKey.OpenSubKey (имя строки, логическая запись) в LotusTrustedSites.RegistryKeyExtensionMethods.GetOrCreateSubKey (RegistryKe y registryKey, String parentKeyLocation, ключ String, логическая запись) в LotusTrustedSites.ReportDownloader.Main (String [] args) Действие не удалось: тип запроса Тип первого разрешения, которое не удалось был: System.Security.Permissions.RegistryPermission

Не удалось выполнить сборку или домен приложения: MyApp, версия = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null Метод, вызвавший ошибка была: Microsoft.Win32.RegistryKey GetOrCreateSubKey (Microsoft.Win32.RegistryKey, Syste m.String, System.String, Boolean)

Ответы [ 3 ]

5 голосов
/ 19 мая 2011

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

Если вам нужно, чтобы приложение работало от имени администратора и было доступно для пользователей, не являющихся администраторами, единственный известный мне способ - это установить приложение в виде запланированной задачи и настроить запуск задачи с использованием учетной записи администратора. Не администраторы все еще должны иметь возможность видеть и запускать эту задачу, и она будет использовать предоставленные учетные данные администратора.

0 голосов
/ 19 мая 2011

Насколько я вижу, вы пытаетесь получить некоторые разрешения реестра.По этой причине ему нужны административные привилегии.

Попробуйте пересмотреть (или опубликовать) код, связанный с доступом к реестру, и попытаться выяснить, в чем причина проблемы

0 голосов
/ 19 мая 2011

Вы указали requireAdministrator, но вы не используете его как администратор.Вы должны либо изменить его на asInvoker, либо запустить его от имени администратора.

...