¿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.ExitCode
Sobre la base de la respuesta de Rustam , puedes:
su.bat
archivo 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.cmd
llamado 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
cd
a un lugar seguro primero.requisitos :
o cmd-shell.
sudo
comando real en Linux.solución :
sudo.cmd
sudo.lnk
.sudo
atajo en la RUTA de su ventana para que se pueda ver.Start in:
acceso directo , deje la ruta vacía.Advanced
botón [ ] - VerificarRun as Administrator
Cuando escriba
sudo dir
en 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.cmd
guió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
pause
comando espera a que revise los resultados. Sipause
saca la ventana de administración, se cierra y no sabe si el comando funcionó o no. ElERRORLEVEL
del 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
-ArgumentList
pará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
sudo
el 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".