¿Hay alguna manera de ejecutar un programa o comando con derechos elevados cuando ya estoy en una línea de comando no elevada?
Exactamente la misma acción que se realizaría cuando hago clic en el acceso directo del programa y selecciono Ejecutar como administrador .
El comando runas probablemente no sea una solución: pide una contraseña, pero solo quiero el diálogo UAC .
windows
administrator
privileges
Lukas Cenovsky
fuente
fuente


Hay una manera de hacer esto en PowerShell:
fuente
powershell -Command "Start-Process 'C:\program.exe' -Verb runAs"powershell -Command "Start-Process 'gvim' 'c:\windows\system32\drivers\etc\hosts' -Verb runAs". ¡Gracias!$p = Start-Process powershell -Verb runAs -ArgumentList "-Command ``"& { ``$Host.SetShouldExit(123) }``"" -PassThru; $p.ExitCodeSobre la base de la respuesta de Rustam , puedes:
su.batarchivo por lotes en algún lugar de su% PATH% predeterminado, con la siguiente línea:@powershell start -verb runas %*function su {start -verb runas @args}¡Ahora puede emitir
su <command> [parameters]en cualquier shell!fuente
RunAdmin es una pequeña utilidad (150Kb) que le permite ejecutar un programa desde la línea de comandos con derechos elevados (mostrará el UAC). Y frente a Hidden Start es freeare.
fuente
Esto funciona para mí en todas las plataformas, incluida Windows 10. Mis necesidades son simples, quizás pueda adaptar el enfoque si necesita energía .
Se me ocurrió un pequeño script llamado,
sudo.cmdllamado así por el comando sudo de Linux. Funciona bastante bien, creo. He esbozado los requisitos, los pasos a seguir y el script está cerca de la parte inferior con un ejemplo. Primero una palabra de advertencia.ADVERTENCIA : el comando se ejecuta en el directorio del sistema de Windows de forma predeterminada. Querrás ir
cda un lugar seguro primero.requisitos :
o cmd-shell.
sudocomando real en Linux.solución :
sudo.cmdsudo.lnk.sudoatajo en la RUTA de su ventana para que se pueda ver.Start in:acceso directo , deje la ruta vacía.Advancedbotón [ ] - VerificarRun as AdministratorCuando escriba
sudo diren la línea de comandos, Windows mostrará elControl emergente de acceso. Si hace clic en "[
NO]" no pasará nada. Windows mostrará un "Access is denied." mensaje.Cuando hace clic en "[
YES]", el comando de directorio se ejecuta con un privilegio elevado. Por supuesto, probablemente desee algo más interesante como detenerse o consultar un servicio:SDRSVC es el nombre del servicio para el "Servicio de copia de seguridad de Windows", esto muestra lo siguiente en una ventana separada de Cmd:
El
sudo.cmdguión en sí es muy básico. Como dije, mis necesidades son simples. Solo quiero detener e iniciar los servicios mientras implemento el código para las pruebas.sudo.cmd:El
pausecomando espera a que revise los resultados. Sipausesaca la ventana de administración, se cierra y no sabe si el comando funcionó o no. ElERRORLEVELdel comando también se devuelve.fuente
Esto funciona para Windows 10, no lo he probado con otras versiones de Windows.
Un ejemplo para abrir el bloc de notas con derechos de administrador de cmd.exe que inicia powershell que solicita los permisos elevados.
Esto le dará un cuadro de diálogo UAC (si está habilitado) con [Sí] [No], o le pedirá la contraseña de administrador.
Otro ejemplo para abrir el archivo hosts con el bloc de notas sería:
Más información: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6
fuente
-ArgumentListparámetro, no simplemente parámetros adicionales para iniciar el proceso.Eche un vistazo a Start ++ : tiene esta funcionalidad junto con muchas otras cosas útiles. Para ejecutar con el indicador UAC, simplemente use
sudoel nombre de su programa en la línea de comando como se muestra aquí:Estas son algunas otras características (también puede agregar las suyas propias):
fuente
Puedes configurar
__COMPAT_LAYER=RunAsAdmin. Luego, los comandos se ejecutarán en un elevado separadocmd.Ejemplo
.bat:Todas las opciones del Modo de compatibilidad se enumeran en el Kit de herramientas de compatibilidad de aplicaciones de MS.
fuente
;como delimitador de comentarios. "Los archivos por lotes no reconocen el punto y coma y generalmente causarán un mensaje de error sobre un comando incorrecto".