How do you run a command as an administrator from the Windows command line?

前端 未结 8 578
眼角桃花
眼角桃花 2020-11-28 19:14

I have a small script that performs the build and install process on Windows for a Bazaar repository I\'m managing. I\'m trying to run the script with elevated, administrati

相关标签:
8条回答
  • 2020-11-28 19:46

    Press the start button. In the search box type "cmd", then press Ctrl+Shift+Enter

    0 讨论(0)
  • 2020-11-28 19:47

    A batch/WSH hybrid is able to call ShellExecute to display the UAC elevation dialog...

    @if (1==1) @if(1==0) @ELSE
    @echo off&SETLOCAL ENABLEEXTENSIONS
    >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"||(
        cscript //E:JScript //nologo "%~f0"
        @goto :EOF
    )
    echo.Performing admin tasks...
    REM call foo.exe
    @goto :EOF
    @end @ELSE
    ShA=new ActiveXObject("Shell.Application")
    ShA.ShellExecute("cmd.exe","/c \""+WScript.ScriptFullName+"\"","","runas",5);
    @end
    
    0 讨论(0)
  • 2020-11-28 19:59

    I would set up a shortcut, either to CMD or to the thing you want to run, then set the properties of the shortcut to require admin, and then run the shortcut from your batch file. I haven't tested to confirm it will respect the properties, but I think it's more elegant and doesn't require activating the Administrator account.

    Also if you do it as a scheduled task (which can be set up from code) there is an option to run it elevated there.

    0 讨论(0)
  • 2020-11-28 20:00

    Simple pipe trick, ||, with some .vbs used at top of your batch. It will exit regular and restart as administrator.

    @AT>NUL||echo set shell=CreateObject("Shell.Application"):shell.ShellExecute "%~dpnx0",,"%CD%", "runas", 1:set shell=nothing>%~n0.vbs&start %~n0.vbs /realtime& timeout 1 /NOBREAK>nul& del /Q %~n0.vbs&cls&exit
    

    It also del /Q the temp.vbs when it's done using it.

    0 讨论(0)
  • 2020-11-28 20:00

    Browse to C:\windows\System32 and right click on cmd.exe and run as Administrator. Worked for me on Windows 7.

    If you are trying to run a script with elevated privileges you could do the same for the script file or use the scheduler's run as a different user option to run the script.

    0 讨论(0)
  • 2020-11-28 20:10
    :: ------- Self-elevating.bat --------------------------------------
    @whoami /groups | find "S-1-16-12288" > nul && goto :admin
    set "ELEVATE_CMDLINE=cd /d "%~dp0" & call "%~f0" %*"
    findstr "^:::" "%~sf0">temp.vbs
    cscript //nologo temp.vbs & del temp.vbs & exit /b
    
    ::: Set objShell = CreateObject("Shell.Application")
    ::: Set objWshShell = WScript.CreateObject("WScript.Shell")
    ::: Set objWshProcessEnv = objWshShell.Environment("PROCESS")
    ::: strCommandLine = Trim(objWshProcessEnv("ELEVATE_CMDLINE"))
    ::: objShell.ShellExecute "cmd", "/c " & strCommandLine, "", "runas"
    :admin -------------------------------------------------------------
    
    @echo off
    echo Running as elevated user.
    echo Script file : %~f0
    echo Arguments   : %*
    echo Working dir : %cd%
    echo.
    :: administrator commands here
    :: e.g., run shell as admin
    cmd /k
    

    For a demo: self-elevating.bat "path with spaces" arg2 3 4 "another long argument"

    And this is another version that does not require creating a temp file.

    <!-- : --- Self-Elevating Batch Script ---------------------------
    @whoami /groups | find "S-1-16-12288" > nul && goto :admin
    set "ELEVATE_CMDLINE=cd /d "%~dp0" & call "%~f0" %*"
    cscript //nologo "%~f0?.wsf" //job:Elevate & exit /b
    
    -->
    <job id="Elevate"><script language="VBScript">
      Set objShell = CreateObject("Shell.Application")
      Set objWshShell = WScript.CreateObject("WScript.Shell")
      Set objWshProcessEnv = objWshShell.Environment("PROCESS")
      strCommandLine = Trim(objWshProcessEnv("ELEVATE_CMDLINE"))
      objShell.ShellExecute "cmd", "/c " & strCommandLine, "", "runas"
    </script></job>
    :admin -----------------------------------------------------------
    
    @echo off
    echo Running as elevated user.
    echo Script file : %~f0
    echo Arguments   : %*
    echo Working dir : %cd%
    echo.
    :: administrator commands here
    :: e.g., run shell as admin
    cmd /k
    
    0 讨论(0)
提交回复
热议问题