首页 文章

以管理员身份运行批处理

提问于
浏览
0

我想要一个以管理员身份运行的批处理文件,现在我找到了以下内容:

:: ### START UAC SCRIPT ###

if "%2"=="firstrun" exit
cmd /c "%0" null firstrun

if "%1"=="skipuac" goto skipuacstart

:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
if '%1'=='ELEV' (shift & goto gotPrivileges)

setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
"%temp%\OEgetPrivileges.vbs"
exit /B

:gotPrivileges

setlocal & pushd .

cd /d %~dp0
cmd /c "%0" skipuac firstrun
cd /d %~dp0

:skipuacstart

if "%2"=="firstrun" exit

:: ### END UAC SCRIPT ###

:: ### START OF YOUR OWN BATCH SCRIPT BELOW THIS LINE ###

问题是,我在命令提示符中遇到了很多错误,这就是我得到的:

C:\ Users \ Mark \ Desktop>如果“firstrun”==“firstrun”退出C:\ Users \ Mark \ Desktop> if“”==“skipuac”goto skipuacstart C:\ Users \ Mark \ Desktop> NET FILE 1> NUL 2> NUL C:\ Users \ Mark \ Desktop> if '2'=='0'(goto gotPrivileges)else(goto getPrivil eges)C:\ Users \ Mark \ Desktop> if''=='ELEV '(shift&goto gotPrivileges)C:\ Users \ Mark \ Desktop> setlocal DisableDelayedExpansion C:\ Users \ Mark \ Desktop>设置“batchPath = C:\ Users \ Mark \ Desktop \ Testing.bat”C:\ Users \ Mark \ Desktop> setlocal EnableDelayedExpansion C:\ Users \ Mark \ Desktop> ECHO设置UAC = CreateObject(“Shell.Application”)1>“C:\ Us ers \ Mark \ AppData \ Local \ Temp \ OEgetPrivileges.vbs”C:\ Users \ Mark \ Desktop> ECHO UAC.ShellExecute“!batchPath!”,“ELEV”,“”,“runas”,1 1 >>“C:\ Users \ Mark \ AppData \ Local \ Temp \ OEgetPrivileges.vbs”C :\用户\马克\桌面> “C:\用户\马克\应用程序数据\本地的\ Temp \ OEgetPrivileges.vbs”

有没有办法解决这个问题,只是检查管理员权限,并要求它没有?

1 回答

  • 0

    将@echo放在第一行就是解决方案 .

    @echo off 
    :: ### START UAC SCRIPT ###
    
    if "%2"=="firstrun" exit
    cmd /c "%0" null firstrun
    
    if "%1"=="skipuac" goto skipuacstart
    
    :checkPrivileges
    NET FILE 1>NUL 2>NUL
    if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
    
    :getPrivileges
    if '%1'=='ELEV' (shift & goto gotPrivileges)
    
    setlocal DisableDelayedExpansion
    set "batchPath=%~0"
    setlocal EnableDelayedExpansion
    ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
    ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
    "%temp%\OEgetPrivileges.vbs"
    exit /B
    
    :gotPrivileges
    
    setlocal & pushd .
    
    cd /d %~dp0
    cmd /c "%0" skipuac firstrun
    cd /d %~dp0
    
    :skipuacstart
    
    if "%2"=="firstrun" exit
    
    :: ### END UAC SCRIPT ###
    
    :: ### START OF YOUR OWN BATCH SCRIPT BELOW THIS LINE ###
    

相关问题