How to create a batch file to run cmd as administrator

前端 未结 12 2117
一个人的身影
一个人的身影 2020-12-04 19:43

I need to run a batch file which needs to register a DLL. The DLL registration is failing because the Batch file is not starting the command prompt as \"administrator\".

相关标签:
12条回答
  • 2020-12-04 20:03

    You might have to use another batch file first to launch the second with admin rights.

    In the first use

    runas /noprofile /user:mymachine\administrator yourbatchfile.bat
    

    Upon further reading, you must be able to type in the password at the prompt. You cannot pipe the password as this feature was locked down for security reasons.

    You may have more luck with psexec.

    0 讨论(0)
  • 2020-12-04 20:06

    You can use a shortcut that links to the batch file. Just go into properties for the shortcut and select advanced, then "run as administrator".

    Then just make the batch file hidden, and run the shortcut.

    This way, you can even set your own icon for the shortcut.

    0 讨论(0)
  • 2020-12-04 20:07

    Maybe something like this:

    if "%~s0"=="%~s1" ( cd %~sp1 & shift ) else (
      echo CreateObject^("Shell.Application"^).ShellExecute "%~s0","%~0 %*","","runas",1 >"%tmp%%~n0.vbs" & "%tmp%%~n0.vbs" & del /q "%tmp%%~n0.vbs" & goto :eof
    )
    
    0 讨论(0)
  • 2020-12-04 20:11

    This script does the trick! Just paste it into the top of your bat file. If you want to review the output of your script, add a "pause" command at the bottom of your batch file.

    This script is now slightly edited to support command line args.

    @echo off
    :: BatchGotAdmin
    ::-------------------------------------
    REM  --> Check for permissions
    >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
    
    REM --> If error flag set, we do not have admin.
    if '%errorlevel%' NEQ '0' (
        echo Requesting administrative privileges...
        goto UACPrompt
    ) else ( goto gotAdmin )
    
    :UACPrompt
        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
    
    :gotAdmin
        pushd "%CD%"
        CD /D "%~dp0"
    ::--------------------------------------
    
    ::ENTER YOUR CODE BELOW:
    
    0 讨论(0)
  • 2020-12-04 20:14

    this might be a solution, i have done something similar but this one does not seem to work for example if the necessary function requires administrator privileges it should ask you to restart it as admin.

    @echo off
    mkdir C:\Users\cmdfolder
    
    if echo=="Access is denied." (goto :1A) else (goto :A4)
    
    :A1
    cls 
    color 0d
    echo restart this program as administator
    
    :A4
    pause
    
    0 讨论(0)
  • 2020-12-04 20:15

    Press Ctrl+Shift and double-click a shortcut to run as an elevated process.

    Works from the start menu as well.

    0 讨论(0)
提交回复
热议问题