Отладка программы, требующей прав администратора под Windows 7

Я запускаю VS2K8 в Win7 64-бит. Я зарегистрирован как admin, и я запускаю его как admin, но программа, с которой я работаю, терпит неудачу, когда доступ запрещен, когда я вызываю ограниченный API. Если запустить программу из Проводника с помощью "Запуск от имени администратора", она будет работать.

Я был убежден, что VS2K8 отлаживает программы с любыми правами, с которыми работает VS2K8. Поскольку это невозможно, я не могу отлаживать свое приложение из-за этого, и я не понимаю, что происходит.

Ответы

Ответ 1

Я нашел ответ. Оказывается, это, по сути, явная проблема: по умолчанию, если у вас есть манифест, вам нужно установить соответствующую привилегию администратора. По умолчанию используется asInvoker, но это не работает, если вам нужны повышенные привилегии, вместо этого вы должны установить его в requireAdministrator в свойствах манифеста.

Ответ 2

Это работает для Visual Studio 2012.

  • Создать файл манифеста: щелкните правой кнопкой мыши по проекту и выберите "Добавить новый элемент", выберите "Файл манифеста приложения". Это добавит файл с именем app.manifest в проект.
  • Изменить файл манифеста: установить атрибут level для тега requestedExecutionLevel в requireAdministrator.

Теперь ваша программа всегда будет требовать прав администратора, где бы она не выполнялась. Если он запущен отладчиком Visual Studio, он предложит вам перезапустить Visual Studio в качестве администратора, если это необходимо.

Ответ 3

Лучше всего запустить VS2008-студию в качестве администратора. Кроме того, полезно изменить настройки манифеста приложения, чтобы требовать привилегии администратора. Вам будет предложено поднять систему до администратора каждый раз при запуске приложения, а при работе под VS2008 среда IDE предложит вам повышение до начала отладки.

Чтобы изменить настройки, откройте свойства проекта и перейдите в "Свойства конфигурации" → "Линкер" → Файл манифеста → Уровень выполнения UAC.

Ответ 4

Запустите VS2008 как администратор.

Ответ 5

У меня был случай, когда я ввел

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

(описанный другим ответом на этом посту)........ и не работал.

Я нашел еще один совет (см. ниже)... и сняв флажок, чтобы этот параметр мог работать.

Попробуйте войти в свойства проекта и на вкладке "debug" снимите флажок "включить процесс хостинга Visual Studio" и посмотрите, устраняет вашу проблему.

(из https://social.msdn.microsoft.com/Forums/vstudio/en-US/b5c4da93-5d64-442e-af28-df6d10765538/debug-as-administrator?forum=vbgeneral)

Итак, мне нужны настройки app.manifest и "снимите галочку".

Ответ 6

Мое тестирование с Vista и VS2005 показало, что при использовании хост-процесса поведение под отладчиком зависит только от того, как вы запустили Visual Studio, а не в манифесте (или отсутствии манифеста) вашего приложения. Когда Visual Studio запускается с повышением, поведение зависит только от использования (или отсутствия) хост-процесса, а не от манифеста. Вероятно, это верно и для Windows 7 и VS2008.

Кроме того, вы пытались запустить приложение вне VS и использовать Attach to Process?