Eleve un programa en ejecución a administrador (Windows 7)

35

A veces puede abrir un programa que desea ejecutar como administrador, pero es posible que ya no lo haya abierto como administrador. ¿Es posible elevar los privilegios de un programa que ya se está ejecutando en Windows 7 o tengo que cerrar y reiniciar como administrador?

Casebash
fuente
8
sudo por la victoria!
Josh K
1
@Josh K - er - ¿Cómo puedes elevar una aplicación que ya se está ejecutando sudo?
Sathyajith Bhat
Es mágico, tendrías que decodificar man sudopara obtener más información.
Josh K
2
@ Josh, si nada más, siempre puedes usar pseudo;)
Tomas Aschan

Respuestas:

26

Lamentablemente no. Un proceso en ejecución no se puede elevar a privilegios de administrador. Estoy buscando una fuente más autorizada, pero por ahora he encontrado:

  1. "Los programas no se pueden elevar una vez que ya se han lanzado ..."

  2. "El código solo se puede elevar a nivel de proceso cuando se inicia, lo que significa que un proceso en ejecución no se puede elevar".

Stephen Jennings
fuente
1
Esto es absolutamente falso. La API win32 admite la elevación de aplicaciones arbitrarias que ya se están ejecutando, aunque la aplicación en cuestión debe exponer la funcionalidad en sí. Este artículo y el código fuente que lo acompaña demuestran cómo lograr esto. Es concebiblemente posible que uno pueda escribir una aplicación para seleccionar y elevar otros procesos ...
Fopedush
8
@Fopedush Aunque ese artículo describe esta técnica como "autoelevante", lo que esos programas de ejemplo parecen estar haciendo realmente es lanzar una nueva instancia del proceso usando ShellExecuteExy el verbo "runas". No creo que eso logre la necesidad del OP de elevar un programa que ya se está ejecutando (perderá todo su estado, por ejemplo).
Stephen Jennings
cuando una instancia de Total Commander 8.01 no elevada se bloquea en una operación como copiar en una subcarpeta de archivos de programa, ofrece la posibilidad de "volver a intentarlo como administrador". ¿No se puede extender esto a procesos "extraños" (no propios)?
n611x007
3
@naxa No he usado Total Commander, pero estaría dispuesto a apostar que la opción "reintentar como administrador" en realidad genera un proceso elevado completamente separado que realiza el trabajo privilegiado. Process Explorer hace esto cuando elige "Mostrar detalles para todos los procesos", lanza una nueva copia elevada de sí mismo y cierra la copia no levantada. Si ese es el caso, entonces los programas deben escribirse específicamente para saber cómo iniciar el segundo proceso correctamente.
Stephen Jennings
1
@StephenJennings Tienes toda la razón: la muestra de código que vinculé en realidad solo se reinicia con el comando runas. Debería haber examinado el código además del artículo antes de comentar. Había tenido la impresión de que la API WIN32 exponía algún tipo de mecanismo de elevación, pero tal vez estoy recordando mal. Voy a buscar y publicar de nuevo si puedo encontrar lo que estaba pensando.
Fopedush