Buena respuesta. ¡Agregué y edité que solía ejecutar en una línea de comando!
Preet Sangha
1
Creé un archivo por lotes con esto y lo guardé como admincmd.bat en mi carpeta de Windows, así que todo lo que tengo que hacer es escribir "admincmd", presionar enter y abre un cmd de administrador. (También agregué otra línea al archivo por lotes con " exit "para que cierre la ventana de cmd que no es de administrador)
Tony Brix
¿Por qué no colocar el cmd (y cualquier parámetro) al final? Tener el comando es extraño desde el punto de vista de la legibilidad.
Eric Fossum
38
Según la documentación , el modelo de seguridad de Windows ...
no otorga privilegios administrativos en todo momento. Incluso los administradores funcionan con privilegios estándar cuando realizan tareas no administrativas que no requieren privilegios elevados.
Tiene la opción Crear esta tarea con privilegios administrativos en el cuadro de diálogo Crear nueva tarea ( Administrador de tareas> Archivo> Ejecutar nueva tarea ), pero no hay una forma incorporada de elevar los privilegios de manera efectiva usando la línea de comando.
Sin embargo, existen algunas herramientas de terceros (que dependen internamente de las API de Windows) que puede utilizar para elevar los privilegios desde la línea de comandos:
Gracias, nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1finalmente funcionó. Las otras runas /user:...formas solicitaron una contraseña a pesar de que ya era un administrador (modo por lotes eliminado).
Marcos
Gracias pornircmdc elevate cmd
tim
4
Después con instalarlo nircmd, para hacer que funcione como Linux sudo, crear un sudo.batarchivo en su camino con este contenido: nircmd elevate %*. Entonces puede hacer, por ejemplo,sudo net stop W3SVC
Kip
1
Creo que windosu es, con mucho, la forma más sencilla y elegante de hacer esto, especialmente si eres un desarrollador ... gracias tío. Siento que estoy en el sistema nix: D
Emmanuel Mahuni
amado windosu:)
Finlay Roelofs
32
No tengo suficiente reputación para agregar un comentario a la respuesta principal, pero con el poder de los alias puedes salirte con la tuya con solo escribir lo siguiente:
powershell "start cmd -v runAs"
Esta es solo una versión más corta de la excelente solución user3018703:
Manera simple que hice después de probar otras respuestas aquí.
Método 1: SIN un programa de terceros (usé esto)
Cree un archivo llamado sudo.bat(puede reemplazar sudocon cualquier nombre que desee) con el siguiente contenido
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
Mover sudo.bata una carpeta en su PATH; si no sabe lo que eso significa, simplemente mueva estos archivos ac:\windows\
Ahora sudofuncionará en el cuadro de diálogo Ejecutar ( win+r) o en la barra de direcciones del explorador (esta es la mejor parte :))
Si bien ambas soluciones funcionan, desafortunadamente, el cuadro de diálogo UAC aparecerá en la parte superior (orden z) pero no se enfocará . (Probado en Win10x64 v1607 build14393.447.)
Ogmios
@Ogmios eso es bastante extraño. ¿El diálogo funciona correctamente cuando no se inicia así? He estado usando esto muy felizmente sin tales problemas. ¿Quizás es por alguna otra configuración que ha cambiado?
Dheeraj Bhaskar
Sí, el cuadro de diálogo UAC funciona como se esperaba en todas las demás situaciones (que he encontrado). Ésta es la única excepción. Y, por supuesto, he cambiado mi sistema de otras formas, pero no he encontrado nada que pueda tener un efecto oculto en este diálogo.
Ogmios
@Ogmios lo siento, entonces amigo, no puedo pensar en nada más que puedas hacer para arreglar esto. Probablemente debería probar las otras soluciones para ver si son mejores para usted. Saludos
Dheeraj Bhaskar
Si bien powershell no es un tercero, no es un programa de acciones, y está escribiendo un programa de terceros para lograr el objetivo.
undrline
13
Utilizo programas nirsoft (por ejemplo, nircmdc) y sysinternals (por ejemplo, psexec) todo el tiempo. Son muy útiles.
Pero si no quiere, o no puede, dl un programa de terceros, aquí hay otra forma, Windows puro.
Respuesta corta : mientras está elevado, puede crear una tarea programada con privilegios elevados que luego puede invocar más tarde mientras no está elevado.
Respuesta de longitud media : mientras que la tarea de creación elevada con (pero prefiero la GUI del programador de tareas):
Lo siguiente, como un archivo por lotes, abrirá un símbolo del sistema elevado con la ruta establecida en el mismo directorio desde el que se invocó el archivo por lotes
set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "
Para que esto funcione, debe editar las propiedades de psexec.exe y en la pestaña de compatibilidad, marque "Ejecutar como administrador". De lo contrario, obtendrá el error: PSEXESVC no instalado. Pero psexec causa problemas con la tecla de tabulación en cmd.exe. No se puede usar la pestaña para completar los nombres de las carpetas.
Peter Quiring
No estoy seguro en qué entorno probaste, pero no necesité cambiar la configuración "Ejecutar como administrador" (¿estás intentando ejecutar cmd.exe en una máquina remota desde la tuya?). Tampoco hay problemas con la tecla de tabulación, puedo completar con éxito los nombres de archivos y carpetas (al menos probado en Win8.1 y Win10, ejecutándose desde las líneas de comando cmd y PowerShell)
David Rodríguez
Estoy usando Win10 y ejecutándolo localmente. No estoy seguro de por qué me pasa a mí y no a ti. Conseguí que nircmd funcionara y no causa problemas con las pestañas.
Peter Quiring
También noto que uno no puede autocompletar con la tecla de tabulación, pero al menos esto abriría un indicador de cmd elevado en el contexto de otro usuario, lo que los métodos anteriores anteriores no parecían lograr cuando lo intenté. La bandera '-h' es genial (Windows 10), funciona de maravilla.
user1840734
4
Haga que el archivo por lotes guarde las credenciales de la cuenta de administrador real utilizando el /savecredinterruptor. Esto solicitará las credenciales la primera vez y luego almacenará la contraseña cifrada en el administrador de credenciales. Luego, para todas las veces que se ejecute el lote, se ejecutará como administrador completo, pero no solicitará las credenciales porque se almacenan cifradas en el administrador de credenciales y el usuario final no puede obtener la contraseña. Lo siguiente debería abrir un CMD elevado con privilegios de administrador completos y solo solicitará la contraseña la primera vez:
Si bien ambas soluciones proporcionadas por Dheeraj Bhaskar funcionan, desafortunadamente, el cuadro de diálogo de UAC aparecerá en la parte superior (orden z) pero no se enfocará (la ventana enfocada es la ventana cmd / powershell de la persona que llama), por lo tanto, necesito agarre el mouse y haga clic en "sí", o para seleccionar la ventana UAC usando Alt + Shift + Tab. (Probado en Win10x64 v1607 build14393.447; UAC = "[...] no atenuar [...]" .)
La siguiente solución es un poco incómoda ya que usa dos archivos, pero conserva el orden de enfoque correcto, por lo que no se requieren acciones adicionales del mouse / teclado (además de confirmar el cuadro de diálogo UAC: Alt + Y ).
cmdadm.lnk (propiedades de acceso directo / Avanzado ... / Ejecutar como administrador = ACTIVADO)
%SystemRoot%\System32\cmd.exe /k "cd /d"
Es descripción - This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.
Copio el bin.x86-64\elevate.exedel .zipen C:\Program Files\elevatey agrego esa ruta a miPATH .
Entonces GitBash puedo ejecutar algo como elevate sc stop W3SVCapagar elIIS servicio.
Ejecutar el comando me da el UACcuadro de diálogo, correctamente enfocado con el control del teclado y al aceptar el cuadro de diálogo vuelvo a mi shell.
@ECHO OFF
SETLOCAL EnableDelayedExpansion EnableExtensions
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO :EOF
:ELEVATE
SET this="%CD%"
SET this=!this:\=\\!
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('CMD', '/K CD /D \"!this!\"', '', 'runas', 1);close();"
EXIT 1
guarde este script como "god.cmd" en su system32 o lo que sea que dirija su ruta ...
si abre un cmd en e: \ mypictures \ y escribe dios, le pedirá las credenciales y lo pondrá de nuevo en el mismo lugar que el administrador ...
powershell es genial pero necesita módulos de zz ... soy oldscool ... solo necesito el sistema ...
jOte-
¿Este método / truco de elevación también funciona para rutas / nombres de archivo largos? ¿O se supone que debo usar "% ~ snx0" o "% ~ dpsnx0" en su lugar?
script'n'code
2
Similar a algunas de las otras soluciones anteriores, creé un elevate archivo por lotes que ejecuta una ventana elevada de PowerShell, sin pasar por la política de ejecución para permitir ejecutar todo, desde comandos simples hasta archivos por lotes y scripts complejos de PowerShell. Recomiendo pegarlo en su carpeta C: \ Windows \ System32 para facilitar su uso.
El elevatecomando original ejecuta su tarea, captura la salida, cierra la ventana de PowerShell generada y luego regresa, escribiendo la salida capturada en la ventana original.
Creé dos variantes, elevatepy elevatex, que respectivamente pausan y mantienen la ventana de PowerShell abierta para más trabajo.
Y en caso de que mi enlace muera alguna vez, aquí está el código para el archivo por lotes elevado original:
@Echo Off
REM Executes a command in an elevated PowerShell window and captures/displays output
REM Note that any file paths must be fully qualified!
REM Example: elevate myAdminCommand -myArg1 -myArg2 someValue
if "%1"=="" (
REM If no command is passed, simply open an elevated PowerShell window.
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
) ELSE (
REM Copy command+arguments (passed as a parameter) into a ps1 file
REM Start PowerShell with Elevated access (prompting UAC confirmation)
REM and run the ps1 file
REM then close elevated window when finished
REM Output captured results
IF EXIST %temp%\trans.txt del %temp%\trans.txt
Echo %* ^> %temp%\trans.txt *^>^&1 > %temp%\tmp.ps1
Echo $error[0] ^| Add-Content %temp%\trans.txt -Encoding Default >> %temp%\tmp.ps1
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -ArgumentList '-ExecutionPolicy Bypass -File ""%temp%\tmp.ps1""' -Verb RunAs}"
Type %temp%\trans.txt
)
) (targetCmd se ejecuta en una ventana de cmd elevada)
Aunque son 3 archivos, puede colocar todo (incluido targetCmd) en alguna subcarpeta (no olvide agregar el nombre de la carpeta a los parches) y cambiar el nombre de "start.cmd" por el único nombre del objetivo.
Para mí, parece la forma más nativa de hacer esto, mientras que cmd no tiene el comando necesario
He leído todas las soluciones anteriores y las he entendido. No entiendo tus pasos. Estoy eligiendo una solución con los mejores pros y contras.
Dzmitry Lahoda
0
No estoy seguro de que la herramienta ExecElevated.exe (13KB) haga el trabajo ... pero podría. O al menos ser útil para otras personas con necesidades similares que vinieron a esta página como yo (pero no encontré la solución, así que terminé creando la herramienta yo mismo en .Net).
Ejecutará una aplicación con token elevado (en modo de administrador). ¡Pero obtendrá un cuadro de diálogo UAC para confirmar! (tal vez no si UAC se ha desactivado, no lo he probado).
Y la cuenta que llama a la herramienta también debe tener admin. derechos por supuesto.
Aquí hay una forma de integrarse con el explorador. Aparecerá un elemento de menú adicional cuando haga clic con el botón derecho en cualquier carpeta dentro del Explorador de Windows:
después de escribir este comando, debe ingresar su contraseña de administrador (si no conoce su contraseña de administrador, déjela en blanco y presione Entrar o escriba algo, funcionó para mí).
@DzmitryLahoda, ¿puedes informarme del error que tienes?
Harish Regada
-2
Presione la tecla Windows + X y ahora puede seleccionar Powershell o Símbolo del sistema con derechos de administrador. Funciona si eres el administrador. La función puede quedar inutilizable si el sistema no es suyo.
Esto no es lo mismo que ejecutar un comando elevado, porque cuando abro una ventana cmd elevada y escribo "whoami", se obtiene el mismo resultado que una ventana no elevada. Cuando ejecuto "whoami / all" en ambos casos, puedo ver las diferencias en términos de permisos para el mismo usuario.
Constantino Cronemberger
-5
Usé runas /user:domainuser@domain cmdque abrió un mensaje elevado con éxito.
Requiere las credenciales de otro usuario. Si ya es administrador y desea ejecutar con privilegios elevados, como cuando hace clic con el botón derecho en una aplicación y elige ejecutar como administrador y no se solicita ninguna contraseña, solo un cuadro de diálogo de confirmación, entonces necesita algo más. Vine aquí buscando esa respuesta, pero no parece estar aquí.
Respuestas:
Me encontré con el mismo problema y la única forma en que pude abrir la CMD como administrador de CMD fue haciendo lo siguiente:
powershell -Command "Start-Process cmd -Verb RunAs"
y presionaEnterfuente
Según la documentación , el modelo de seguridad de Windows ...
Tiene la opción Crear esta tarea con privilegios administrativos en el cuadro de diálogo Crear nueva tarea ( Administrador de tareas> Archivo> Ejecutar nueva tarea ), pero no hay una forma incorporada de elevar los privilegios de manera efectiva usando la línea de comando.
Sin embargo, existen algunas herramientas de terceros (que dependen internamente de las API de Windows) que puede utilizar para elevar los privilegios desde la línea de comandos:
NirCmd :
nircmdc elevate cmd
windosu :
npm install -g windosu
(requiere node.js instalado)sudo cmd
fuente
nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1
finalmente funcionó. Las otrasrunas /user:...
formas solicitaron una contraseña a pesar de que ya era un administrador (modo por lotes eliminado).nircmdc elevate cmd
nircmd
, para hacer que funcione como Linuxsudo
, crear unsudo.bat
archivo en su camino con este contenido:nircmd elevate %*
. Entonces puede hacer, por ejemplo,sudo net stop W3SVC
windosu
:)No tengo suficiente reputación para agregar un comentario a la respuesta principal, pero con el poder de los alias puedes salirte con la tuya con solo escribir lo siguiente:
Esta es solo una versión más corta de la excelente solución user3018703:
fuente
Manera simple que hice después de probar otras respuestas aquí.
Método 1: SIN un programa de terceros (usé esto)
sudo.bat
(puede reemplazarsudo
con cualquier nombre que desee) con el siguiente contenidopowershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
sudo.bat
a una carpeta en suPATH
; si no sabe lo que eso significa, simplemente mueva estos archivos ac:\windows\
sudo
funcionará en el cuadro de diálogo Ejecutar ( win+r) o en la barra de direcciones del explorador (esta es la mejor parte :))Método 2: CON un programa de terceros
sudo.bat
(puede reemplazarsudo
con cualquier nombre que desee) con el siguiente contenidonircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
yasudo.bat
una carpeta en suPATH
; si no sabe lo que eso significa, simplemente mueva estos archivos ac:\windows\
sudo
funcionará en el cuadro de diálogo Ejecutar ( win+r) o en la barra de direcciones del explorador (esta es la mejor parte :))fuente
Utilizo programas nirsoft (por ejemplo, nircmdc) y sysinternals (por ejemplo, psexec) todo el tiempo. Son muy útiles.
Pero si no quiere, o no puede, dl un programa de terceros, aquí hay otra forma, Windows puro.
Respuesta corta : mientras está elevado, puede crear una tarea programada con privilegios elevados que luego puede invocar más tarde mientras no está elevado.
Respuesta de longitud media : mientras que la tarea de creación elevada con (pero prefiero la GUI del programador de tareas):
Luego, más tarde, no se necesita elevación, invoca con
Respuesta larga : hay muchos detalles inquietantes; vea la entrada de mi blog "Iniciar programa SIN UAC, útil al iniciar el sistema y en archivos por lotes (use el programador de tareas)"
fuente
Lo siguiente, como un archivo por lotes, abrirá un símbolo del sistema elevado con la ruta establecida en el mismo directorio desde el que se invocó el archivo por lotes
fuente
Mi forma favorita de hacer esto es usando PsExec.exe de SysInternals, disponible en http://technet.microsoft.com/en-us/sysinternals/bb897553
El interruptor "-h" es el que hace la magia:
-h Si el sistema de destino es Vista o superior, el proceso se ejecuta con el token elevado de la cuenta, si está disponible.
fuente
Haga que el archivo por lotes guarde las credenciales de la cuenta de administrador real utilizando el
/savecred
interruptor. Esto solicitará las credenciales la primera vez y luego almacenará la contraseña cifrada en el administrador de credenciales. Luego, para todas las veces que se ejecute el lote, se ejecutará como administrador completo, pero no solicitará las credenciales porque se almacenan cifradas en el administrador de credenciales y el usuario final no puede obtener la contraseña. Lo siguiente debería abrir un CMD elevado con privilegios de administrador completos y solo solicitará la contraseña la primera vez:fuente
Si bien ambas soluciones proporcionadas por Dheeraj Bhaskar funcionan, desafortunadamente, el cuadro de diálogo de UAC aparecerá en la parte superior (orden z) pero no se enfocará (la ventana enfocada es la ventana cmd / powershell de la persona que llama), por lo tanto, necesito agarre el mouse y haga clic en "sí", o para seleccionar la ventana UAC usando Alt + Shift + Tab. (Probado en Win10x64 v1607 build14393.447; UAC = "[...] no atenuar [...]" .)
La siguiente solución es un poco incómoda ya que usa dos archivos, pero conserva el orden de enfoque correcto, por lo que no se requieren acciones adicionales del mouse / teclado (además de confirmar el cuadro de diálogo UAC: Alt + Y ).
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
Corre con
su
.fuente
He estado usando
Elevate
por un tiempo.Es descripción -
This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.
Copio el
bin.x86-64\elevate.exe
del.zip
enC:\Program Files\elevate
y agrego esa ruta a miPATH
.Entonces GitBash puedo ejecutar algo como
elevate sc stop W3SVC
apagar elIIS
servicio.Ejecutar el comando me da el
UAC
cuadro de diálogo, correctamente enfocado con el control del teclado y al aceptar el cuadro de diálogo vuelvo a mi shell.fuente
..
guarde este script como "god.cmd" en su system32 o lo que sea que dirija su ruta ...
si abre un cmd en e: \ mypictures \ y escribe dios, le pedirá las credenciales y lo pondrá de nuevo en el mismo lugar que el administrador ...
fuente
Similar a algunas de las otras soluciones anteriores, creé un
elevate
archivo por lotes que ejecuta una ventana elevada de PowerShell, sin pasar por la política de ejecución para permitir ejecutar todo, desde comandos simples hasta archivos por lotes y scripts complejos de PowerShell. Recomiendo pegarlo en su carpeta C: \ Windows \ System32 para facilitar su uso.El
elevate
comando original ejecuta su tarea, captura la salida, cierra la ventana de PowerShell generada y luego regresa, escribiendo la salida capturada en la ventana original.Creé dos variantes,
elevatep
yelevatex
, que respectivamente pausan y mantienen la ventana de PowerShell abierta para más trabajo.https://github.com/jt-github/elevate
Y en caso de que mi enlace muera alguna vez, aquí está el código para el archivo por lotes elevado original:
fuente
Puede usar una variable de entorno temporal para usar con un acceso directo elevado (
start.cmd
ascladm.lnk (acceso directo)
(para realizar cambios en la ruta, deberá crear temporalmente el
env.Variable
)ascladm.cmd
) (targetCmd se ejecuta en una ventana de cmd elevada)
Aunque son 3 archivos, puede colocar todo (incluido targetCmd) en alguna subcarpeta (no olvide agregar el nombre de la carpeta a los parches) y cambiar el nombre de "start.cmd" por el único nombre del objetivo.
Para mí, parece la forma más nativa de hacer esto, mientras que cmd no tiene el comando necesario
fuente
No estoy seguro de que la herramienta ExecElevated.exe (13KB) haga el trabajo ... pero podría. O al menos ser útil para otras personas con necesidades similares que vinieron a esta página como yo (pero no encontré la solución, así que terminé creando la herramienta yo mismo en .Net).
Ejecutará una aplicación con token elevado (en modo de administrador). ¡Pero obtendrá un cuadro de diálogo UAC para confirmar! (tal vez no si UAC se ha desactivado, no lo he probado).
Y la cuenta que llama a la herramienta también debe tener admin. derechos por supuesto.
Ejemplo de uso:
fuente
El método de Dheeraj Bhaskar con Powershell tiene un espacio faltante, al menos para la encarnación de Windows 10 de Powershell.
La línea de comando dentro de su sudo.bat debería ser
Tenga en cuenta el espacio extra después de% cd%
;) Frode
fuente
Aquí hay una forma de integrarse con el explorador. Aparecerá un elemento de menú adicional cuando haga clic con el botón derecho en cualquier carpeta dentro del Explorador de Windows:
Estos son los pasos:
* Utilice pushd en lugar de cd para permitir que funcione en cualquier unidad. :-)
fuente
Puede usar la siguiente sintaxis, tenía la misma pregunta y no pensé que se necesitara un script.
Esto funcionó para mí, puede ser diferente en su red.
fuente
Simplemente use el comando: runas / noprofile / usuario: administrador cmd
fuente
Lo hice fácilmente usando este siguiente comando en cmd
runas / netonly / usuario: Administrador \ Administrador cmd
después de escribir este comando, debe ingresar su contraseña de administrador (si no conoce su contraseña de administrador, déjela en blanco y presione Entrar o escriba algo, funcionó para mí).
fuente
Presione la tecla Windows + X y ahora puede seleccionar Powershell o Símbolo del sistema con derechos de administrador. Funciona si eres el administrador. La función puede quedar inutilizable si el sistema no es suyo.
fuente
Hay varias formas de abrir un cmd elevado, pero solo su método funciona desde el símbolo del sistema estándar. Solo necesitas poner
user
nousername
:Consulte la ayuda relevante de la comunidad de Microsoft .
fuente
Usé
runas /user:domainuser@domain cmd
que abrió un mensaje elevado con éxito.fuente