¿Cómo puedo ejecutar un archivo por lotes desde otro archivo por lotes con derechos de administrador?

He probado el RUNAS de comandos, pero se requiere la contraseña de administrador.

Estoy buscando una alternativa para la ejecución de un archivo por lotes derecho del ratón y ejecutar como administrador. Quiero automatizar desde otro archivo de proceso por lotes.

  • user93353 te dio la respuesta, no hay ninguna otra manera. Por razones de seguridad. Otra opción sería la de dar derechos a su usuario para que ejecute o escribir en el recurso que está buscando. Si puedes, por favor, dar más detalles sobre lo que se desea lograr.
  • posibles duplicados de Windows CMD Archivo por Lotes Ejecutar Un Comando como Administrador
  • no es una dup – él se está preguntando cómo hacerlo de forma no interactiva – la respuesta en el otro lo hace de forma interactiva.
  • Gracias por la respuesta de los chicos. Yo solía control UAC de windows para deshabilitar la autenticación, de modo que puedo ejecutar archivos por Lotes de archivos de proceso por lotes.
InformationsquelleAutor Vinay KV | 2013-09-12

8 Comentarios

  1. 21

    En Windows 7:

    1. Crear un acceso directo a ese archivo por lotes

    2. Haga clic en el archivo de acceso directo y elija Propiedades

    3. Haga clic en el Advanced botón para encontrar una casilla de verificación para ejecutar como administrador

    De verificación de la captura de pantalla a continuación

    Automáticamente se ejecuta un archivo por lotes como administrador

    • Una mala respuesta. OP pidió una manera de ejecutar el archivo por lotes como admin de dentro de otro archivo por lotes, este no funciona de esa manera.
    • ¿Has probado y confirmado que no funcionó?
    • Yo probablemente debería haber especificado que lo probé en XP hace un tiempo, no funcionó. Yo no lo he probado recientemente, así que puedo estar equivocado, o yo podría haber hecho de forma incorrecta cuando lo hice.
  2. 12

    Puede utilizar PowerShell a ejecutar b.bat como administrador de a.bat:

    set mydir=%~dp0
    
    Powershell -Command "& { Start-Process \"%mydir%b.bat\" -verb RunAs}"
    

    Se le pedirá al usuario un cuadro de diálogo de confirmación. El usuario elige YES y, a continuación, b.bat será ejecutar como administrador.

  3. 12

    Uso

    runas /savecred /profile /user:Administrator whateveryouwanttorun.cmd
    

    Le pedirá la contraseña la primera vez. No va a pedir la contraseña de nuevo, a menos que haya cambiado la contraseña, etc.

    • Que permitirá al usuario ejecutar comandos arbitrarios con los privilegios administrativos, por lo que bien podría hacer de él un miembro del grupo administradores local.
    • en sus propias palabras, I am searching for an alternative for running a batch file by right clicking on it and running as an administrator. i want to automate it from another batch file. – si él es capaz de ejecutarlo haciendo clic derecho y ejecutar como administrador, luego él ya sabe la contraseña de administrador – esto es como sudo en linux. Otra cosa es que esto no puede ser utilizado sin la contraseña de administrador.
    • Cierto, pero irrelevante. sudo puede ser restringido a determinados comandos, runas /savecred no puede. Si se quita la contraseña de confirmación de que efectivamente eliminar la barrera entre el administrador y el usuario normal. Un mejor enfoque podría ser la creación de una tarea programada.
    • en este caso, el usuario tiene acceso a root/admin contraseña. En Linux, si tiene la contraseña de root, puede modificar el archivo sudoers para eliminar cualquier restricción sobre el uso de sudo.
    • AFAIK, runas.exe no provoca una petición de elevación, que parece ser lo que el OP se refiere.
  4. 11

    Poner cada línea en cmd o todas de tema en el archivo de proceso por lotes:

    @echo off
    
    if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
    
    "Put your command here"
    

    funciona muy bien para mí.

  5. 1

    Runas.exe no trabajo aquí. Usted puede utilizar VBScript para invocar la «Ejecutar como Administrador» shell verbo. La Elevación de Powertoys contener un fichero batch que permite invocar un comando con privilegios elevados:

    elevatecmd.exe

    http://blogs.technet.com/b/elevationpowertoys/

    • Que provocará la petición de elevación, pero no prescindir de ella.
  6. 0

    El siguiente comando se puede guardar como un archivo bat mediante la sustitución de la bat nombre de archivo y se puede ejecutar en orden a ejecutar el script de bat con la elevación. El siguiente comando se aplica para Windows 7 de 64 bits.

    "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" -windowstyle hidden -nologo -noprofile -executionpolicy bypass -command "start-process -verb 'runas' -filepath BATCHFILENAME.BAT
    
    • Puede provocar la petición de elevación como ese, pero no se puede prescindir de ella.
  7. 0

    Si usted está tratando de invocar a un Windows UAC símbolo del sistema (el que pone toda la pantalla negra y le pregunta si está la concesión de privilegios de administrador para la siguiente tarea), las RUNAS no es el mejor camino para hacerlo, ya que:

    1. No vas a recibir un mensaje de UAC autorización, incluso si ha iniciado sesión como el administrador y
    2. RUNAS espera que usted tiene la contraseña de administrador, incluso si su usuario es el programa de instalación como administrador local, en cuyo caso la antigua contraseña, no es una buena práctica de seguridad, especialmente en los entornos de trabajo.

    Lugar, tratar de copiar & pegue el código siguiente para asegurarse de que su archivo por lotes se ejecuta con privilegios de administrador:

    @echo off
    
    >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
    
    if '%errorlevel%' NEQ '0' (
        echo Requesting Admin access...
        goto goUAC )
        else goto goADMIN
    
    :goUAC
        echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
        set params = %*:"=""
        echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
        "%temp%\getadmin.vbs"
        del "%temp%\getadmin.vbs"
        exit /B
    
    :goADMIN
        pushd "%CD%"
        CD /D "%~dp0"
    
    rem --- FROM HERE PASTE YOUR ADMIN-ENABLED BATCH SCRIPT ---
    echo Stopping some Microsoft Service...
    net stop sqlserveragent
    rem --- END OF BATCH ----
    

    Esta solución funciona al 100% en Windows 7, 8.1 y 10 configuraciones con UAC activado.

    • Lo siento por los angry tio que votaron mi respuesta. Él tenía claro que no lo he probado, y para ser justos hice respondió a la pregunta que inicia este hilo. Este tipo de ignorantes negatividad desalentar a los colaboradores de perder el tiempo en gente que no se trate de respuestas antes de la votación sin pruebas.
    • Esto hará un bucle infinito si el comando no se puede !
    • Yo creo que tu problema fue que usted escribió que así mucho código, cuando no eran mucho más cortos y más simples soluciones que ya han publicado.
    • else goto goADMIN debe ser reemplazado con simplemente ir a goADMIN
  8. -1

    Este un truco que he utilizado por si alguien quiere probar esta en el archivo de proceso por lotes.Esto le dará la administración símbolo del sistema al ejecutar el archivo por lotes

    @echo off
    cd \ && cd windows/system32 && command which needs admin credentials
    pause
    

Dejar respuesta

Please enter your comment!
Please enter your name here