Вам не нужно требовать прав администратора для запуска приложения, поэтому манифест приложения должен содержать уровень asInvoker
. В противном случае пользователи с ограниченными правами не смогут запустить ваше приложение, конечно, это не то, что вам нужно.
Дэвид упомянул Firefox, вот как он автоматически обновляется. Для запуска не требуются права администратора. Firefox загружает обновления в фоновом режиме и сохраняет их на жестком диске. В следующий раз, когда пользователь запускает Firefox, он видит, что обновление готово к установке, и запускает установщик более новой версии. Установщик должен запускаться с повышенными правами, поэтому пользователи видят запрос UAC для повышения прав. После завершения обновления Firefox запускается снова без повышения прав .
Самое сложное - запустить Firefox без повышенных прав после завершения обновления. Я бы не рекомендовал использовать трюки для запуска процесса без повышенных прав. Вы должны сохранить один процесс с обычным токеном безопасности пользователя. Я не знаю, как Firefox справляется с этим, но самый простой способ был бы: запустить средство обновления без повышения прав (отметьте его в манифесте asInvoker
), затем средство обновления перезапустится с повышенными функциями ShellExecute
и глаголом runas
, По завершении процесса с повышенными правами запускается обновленное приложение.