Отладка программы, которая требует прав администратора в Windows 7 - PullRequest
16 голосов
/ 20 июня 2010

Я использую Visual Studio 2008 в 64-разрядной версии Windows 7. Я вошел в систему как администратор, и я запускаю его как администратор, но программа, над которой я работаю, завершается с ошибкой, когда я вызываю ограниченный API. Если запустить программу из Проводника с помощью «Запуск от имени администратора», она работает.

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

Ответы [ 6 ]

14 голосов
/ 28 февраля 2014

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

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

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

8 голосов
/ 25 июня 2010

Лучше всего запускать Visual Studio 2008 с правами администратора.Кроме того, полезно изменить настройки манифеста вашего приложения, чтобы требовать прав администратора.Система будет запрашивать повышение уровня доступа к системному администратору при каждом запуске приложения, а при работе в Visual Studio 2008 среда IDE предложит вам повышение прав до начала отладки.

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

7 голосов
/ 22 июня 2010

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

По умолчанию asInvoker, но это не работает, если вам нужны повышенные привилегии;вместо этого вы должны установить его в requireAdministrator в свойствах манифеста.

2 голосов
/ 20 июня 2010

Запустите Visual Studio 2008 от имени администратора.

1 голос
/ 05 ноября 2015

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

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

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

Я нашел другой совет (см. Ниже) ... и снятие отметки с этой опции позволило моему коду работать.

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

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

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

0 голосов
/ 21 июня 2010

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

Кроме того, вы пытались запустить приложение вне Visual Studio и использовать Присоединить к процессу ?

...