Win C #: запуск приложения от имени администратора без приглашения UAC - PullRequest
14 голосов
/ 21 марта 2010

Мне нужен один из моих .exe, чтобы всегда запускаться от имени администратора без запроса UAC. Моя программа будет установлена ​​с установкой, которая на один раз будет иметь права администратора, и мне нужно выполнить такой шаг в этой настройке, чтобы мой исполняемый файл всегда выполнялся как администратор без запроса UAC.

На данный момент я нашел 2 решения:

1. Воспользуйтесь пользовательским сервисом, который поднимет мне программу.

2. Используйте Task Scheduler .

Есть ли другое решение? Какой-то манифест, наверное?

Спасибо.

Ответы [ 2 ]

27 голосов
/ 21 марта 2010

Если бы это было возможно, UAC был бы совершенно неэффективным. неспособность приложений поднять себя без согласия пользователя является фундаментальным принципом UAC.

Помимо уже имеющего повышенного уровня процесса, запускающего его (т. Е. Службы или планировщика задач), ответ - нет, это невозможно сделать.

8 голосов
/ 22 марта 2010

Конечно, если вы хотите просто управлять интерфейсом пользователя, вы должны использовать флаг доступа интерфейса в манифесте (см. http://msdn.microsoft.com/en-us/library/ms742884.aspx). Если вы устанавливаете приложение в надежном месте (например, system32) и оно будет подписано (вздох!), тогда при запуске приложения оно будет повышено до высокого уровня (для учетной записи администратора).

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

...