Win С#: запуск приложения как администратора без приглашения UAC

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

Я нашел 2 решения:

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

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

Есть ли другое решение? Возможно, некоторые манифестации?

Спасибо.

Ответы

Ответ 1

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

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

Ответ 2

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

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