Поднять запущенную программу до администратора (Windows 7)

35

Иногда вы можете открыть программу, которую хотите запустить как администратор, но вы, возможно, уже открыли ее не как администратор. Можно ли повысить привилегии уже запущенной программы в Windows 7 или мне нужно закрыть и перезапустить с правами администратора?

Casebash
источник
8
Судо за победу!
Джош К
1
@Josh K - er - Как вы можете поднять уже работающее приложение, используя sudo?
Сатьяджит Бхат
Это волшебно, вам нужно расшифровать man sudoдля получения дополнительной информации.
Джош К
2
@ Джош, если ничего другого, ты всегда можешь использовать pseudo;)
Томас Ашан

Ответы:

26

К сожалению нет. Работающий процесс не может быть повышен до привилегий администратора. Я ищу более авторитетный источник, но сейчас я нашел:

  1. «Программы нельзя повысить, если они уже запущены ...»

  2. «Код может быть повышен только на уровне процесса при запуске, что означает, что работающий процесс не может быть повышен».

Стивен Дженнингс
источник
1
Это абсолютно не соответствует действительности. Win32 API действительно поддерживает повышение прав произвольных приложений, которые уже запущены, хотя рассматриваемое приложение должно предоставлять саму функциональность. Эта статья и сопровождающий исходный код демонстрируют, как этого добиться. Вполне возможно, что можно написать приложение для выбора и повышения других процессов ...
Фопедуш
8
@Fopedush Несмотря на то, что в этой статье этот метод описывается как «самоподъемный», похоже, что эти программы-примеры на самом деле делают запуск нового экземпляра процесса с использованием ShellExecuteExглагола «runas». Я не думаю, что это достигает потребности ОП в повышении уровня программы, которая уже запущена (например, она потеряет все свое состояние).
Стивен Дженнингс
когда экземпляр с повышенными правами Total Commander 8.01 заблокирован в операции, такой как копирование в подпапку программных файлов, он предлагает возможность «повторить попытку как администратор». Разве это нельзя распространить на «чужие» (не на себя) процессы?
n611x007
3
@naxa Я не использовал Total Commander, но я хотел бы поспорить, что опция «повторить как администратор» фактически порождает совершенно отдельный процесс с повышенными правами, который выполняет привилегированную работу. Process Explorer делает это, когда вы выбираете «Показать детали для всех процессов», он запускает новую собственную копию с повышенными правами и закрывает невыполненную копию. Если это так, то программы должны быть специально написаны, чтобы знать, как правильно запустить второй процесс.
Стивен Дженнингс
1
@StephenJennings Вы совершенно правы - пример кода, который я связал, на самом деле просто перезапускается с помощью команды runas. Я должен был проверить код в дополнение к статье, прежде чем комментировать. У меня сложилось впечатление, что API-интерфейс WIN32 действительно представляет какой-то механизм повышения прав - но, возможно, я неправильно помню. Я буду копаться и отправлять снова, если смогу найти то, о чем думал.
Фопедуш