Как запустить приложение от имени администратора при отладке с помощью Visual Studio?

90

У меня есть приложение С #, в котором у меня должен быть доступ на чтение / запись к корню диска C. Я понимаю, что могу скомпилировать код и запустить исполняемый файл от имени администратора, и он работает. Но мне нужно его отладить, и я не уверен, как запустить приложение в Visual Studio.

Я пробовал добавить:

<requestedExecutionLevel level="asInvoker" uiAccess="true" />

в мой манифест, но я все еще получаю ошибку отказа в доступе.

Вот строка кода, которая терпит неудачу:

MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(@"c:\somemapnamefile.data", System.IO.FileMode.OpenOrCreate, "somemapname", 1000);

На данный момент у меня есть работа, но я хотел бы знать на будущее.

carny666
источник
3
Если вы запустите VS как администратор, все, что вы отлаживаете, также будет работать как администратор.
JMK
Я бы порекомендовал следующее исправление, иначе у вас возникнут проблемы с запуском закрепленных решений
JonnyRaa
В моем случае мне пришлось перейти в раздел «Совместимость» и выбрать запуск в Windows XP (Service Pack 3). Запуск IDE от имени администратора не помог.
Венди

Ответы:

128

Просто запустите визуальную студию как администратор. Любая программа, которую вы оттуда отлаживаете, также будет запускаться от имени администратора.

Сэм, я говорю: "Восстановите Монику"
источник
13
Еще лучше, установите ярлык Visual Studio для запуска от имени администратора со страницы свойств
Панайотис Канавос
20
@PanagiotisKanavos Я лично предпочитаю избегать работы с правами администратора, если у меня нет особой причины для этого
Сэм, я говорю, Восстановите Монику
1
Да. Есть несколько программ, требующих администратора. И как только я запускаю его, VS просит перезапустить VS в режиме администратора. Я не знаю, как это происходит. Я просто установил level = "requireAdministrator". Но иногда он не перезапускается автоматически,
Джейсон Рагаса
@SamIam: а какие настройки требуются после развертывания веб-приложения ...?
Ghanshyam Lakhani
1
Несмотря на то , принято, это не правильное решение. Вы не запускаете программы, ни VS, ни что-либо еще в качестве администратора, если в этом нет необходимости. Первоначальный вопрос касался программы, которую пишет OP, а не VS. Правильный ответ - указать, что разрабатываемая программа требует прав администратора.
Gábor
65

VS должен запускаться с правами администратора. однако более элегантный способ - указать requiredExecutionLevel в манифесте, который должен иметь значение «requireAdministrator».

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

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

Супават Пусаванно
источник
1
Также убедитесь, что на вкладке «Безопасность» вашего проекта не установлен флажок «Включить ClickOnce ...», иначе вы получите предупреждение системы безопасности при попытке запустить код, требуемый администратором. (этот параметр будет проверен, если вы в какой-то момент уже нажимали «Опубликовать» в своем приложении).
monty
1
Замечание - если манифеста нет, просто добавьте его. Почему-то я не осознавал, что этого может не быть.
Mołot
12

Вы также можете установить эту опцию администратора автоматически:

введите описание изображения здесь

Бура Чухадар
источник
1
Я думаю, вы хотите выделить пункт «Свойства» в контекстном меню, но все знают, о чем вы говорите.
Аарон Кэмпбелл
Более простой способ Compatibility > Run As Administrator.
AStopher
1
Это чудовищно плохая идея. Вы действительно не хотите, чтобы Visual Studio постоянно работала от имени администратора.
Jammer
1
Этот снимок экрана совершенно непонятен и не имеет сопроводительного объяснения, независимо от того, хорошее это решение или нет.
MickeyfAgain_BeforeExitOfSO
7

Чтобы ответить на вопрос в заголовке, вы можете просто выбрать Запуск от имени администратора в контекстном меню при запуске VS.

Джош
источник
4

Теперь проверенный ответ работать не будет.

Вы должны найти опцию для этого в свойствах проекта Linker -> Manifest File -> UAC Execution Level . Установите для этого параметра requireAdminstrator .

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

Цзюнь Цзе Ван
источник
1

«Эта задача требует применения иметь повышенные разрешения» ошибка возникает из - за текущего пользователя не имеет достаточных привилегий для открытия Visual Studio.

Как временное решение

Вы можете решить эту проблему, щелкнув правой кнопкой мыши визуальную студию и выбрав запускать от имени администратора каждый раз, когда вы собираетесь ее открыть.

Как постоянное решение ,

Вы можете проверить устранение неполадок совместимости

  • Щелкните правой кнопкой мыши Visual Studio> выберите Устранение неполадок совместимости.
  • Выберите программу устранения неполадок.
  • Установите флажок Программа требует дополнительных разрешений.
  • Щелкните по Проверить программу.
  • Подождите, пока программа не запустится. Нажмите "Далее.
  • Выберите Да, сохранить эти настройки для этой программы.

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

Мохамед
источник