Eleve um programa em execução ao administrador (Windows 7)

35

Às vezes, você pode abrir um programa que deseja executar como administrador, mas talvez já o tenha aberto não como administrador. É possível elevar os privilégios de um programa já em execução no Windows 7 ou preciso fechar e reiniciar como administrador?

Casebash
fonte
8
sudo pela vitória!
Josh K
11
@ Josh K - er - Como você pode elevar um aplicativo já em execução usando sudo?
Sathyajith Bhat
É mágico, você teria que decodificar man sudopara obter mais informações.
21710 Josh K
2
@ Josh, se nada mais, você sempre pode usar pseudo;)
Tomas Aschan

Respostas:

26

Infelizmente não. Um processo em execução não pode ser elevado a privilégios de administrador. Estou procurando uma fonte mais autorizada, mas por enquanto encontrei:

  1. "Os programas não podem ser elevados depois de lançados ..."

  2. "O código só pode ser elevado no nível do processo durante a inicialização, o que significa que um processo em execução não pode ser elevado."

Stephen Jennings
fonte
11
Isso é absolutamente falso. A API win32 oferece suporte à elevação de aplicativos arbitrários que já estão em execução, embora o aplicativo em questão deva expor a própria funcionalidade. Este artigo e o código fonte acompanhante demonstram como fazer isso. É concebível possível que alguém poderia escrever um aplicativo para selecionar e elevar outros processos ...
Fopedush
8
@Fopedush Embora esse artigo descreva essa técnica como "auto-elevável", o que esses programas de exemplo parecem realmente estar executando é lançar uma nova instância do processo usando ShellExecuteExe o verbo "runas". Eu não acho que isso atenda à necessidade do OP de elevar um programa que já está sendo executado (ele perderá todo o seu estado, por exemplo).
Stephen Jennings
quando uma instância não elevada do Total Commander 8.01 é bloqueada em uma operação, como copiar para uma subpasta de arquivos de programa, oferece a possibilidade de "tentar novamente como administrador". Isso não pode ser estendido para processos "estrangeiros" (não próprios)?
N611x007
3
@naxa Eu não usei o Total Commander, mas estaria disposto a apostar que a opção "repetir como administrador" gera um processo elevado completamente separado que executa o trabalho privilegiado. O Process Explorer faz isso quando você escolhe "Mostrar detalhes para todos os processos", lança uma nova cópia elevada de si mesmo e fecha a cópia não aumentada. Se for esse o caso, os programas precisam ser escritos especificamente para saber como iniciar o segundo processo corretamente.
Stephen Jennings
11
@StephenJennings Você está completamente certo - o exemplo de código que vinculei realmente é reiniciado com o comando runas. Eu deveria ter verificado o código além do artigo antes de comentar. Eu tinha a impressão de que a API do WIN32 expunha algum tipo de mecanismo de elevação - mas talvez eu esteja me lembrando errado. Vou procurar e postar novamente, se conseguir encontrar o que estava pensando.
Fopedush