Как мне автоматически запустить приложение с правами администратора? - PullRequest
0 голосов
/ 01 февраля 2019

Я создал консольное приложение, которое должно обновить некоторые записи реестра, чтобы я мог получить доступ к 32-битным компонентам COM из 64-битного приложения.Если у меня есть права администратора, это прекрасно работает, но я не могу запустить приложение с правами администратора из коробки.

Это то, что я сделал.

  1. Создайте консольное приложение Windows.
  2. Добавьте мой код.
  3. Щелкните правой кнопкой мыши мой проект и выберите Свойства.
  4. Перейдите к Configuration Properties > Linker > Manifest File > UAC Execution Level и установите requireAdministrator (/level='requireAdministrator').

enter image description here

Чтобы понять это, потребовалось много времени, поскольку вся информация в Интернете относится к Visual Studio 2010 или более ранней версии, для чего требовалосьвручную создает файл манифеста XML и конфликтует с автоматически сгенерированным файлом, который он создает.

Однако этого недостаточно для запуска его с правами администратора.Это настоящая PITA, что эту информацию нельзя легко найти.Есть ли какой-то другой шаг, который я пропускаю?Что-то вроде процесса подписания?

1 Ответ

0 голосов
/ 01 февраля 2019

Оказывается, это то, как запускается это мини-приложение.

Из моей основной программы использование ShellExecute() или ShellExecuteEx() с глаголом "runas" позволит запускать этот исполняемый файл с правами администратора, не прерываясьдиалог UAC.

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

...