直接上示例代码:
@echo off
:: 检查是否以管理员身份运行
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo 请求管理员权限...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:: 在这里添加你想要执行的命令,例如启动记事本
start notepad.exe代码的详细解释如下:
-
@echo off:关闭命令回显,使脚本运行时不显示执行的命令。 -
:: 检查是否以管理员身份运行:注释,说明接下来的代码是用来检查权限的。 -
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system":使用cacls.exe命令检查当前用户是否有访问系统目录的权限。>nul 2>&1表示将标准输出和错误输出都重定向到空设备(不显示在屏幕上)。 -
if '%errorlevel%' NEQ '0':判断上一条命令的返回值(%errorlevel%)是否不等于0。如果不等于0,说明没有管理员权限。 -
( echo 请求管理员权限... & goto UACPrompt ):如果没有管理员权限,输出提示信息并跳转到UACPrompt标签。 -
else ( goto gotAdmin ):如果有管理员权限,跳转到gotAdmin标签。 -
:UACPrompt:定义一个名为UACPrompt的标签,用于请求管理员权限。 -
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs":创建一个VBScript文件,用于请求管理员权限。 -
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs":向VBScript文件中添加一行代码,用于以管理员身份重新运行脚本。 -
"%temp%\getadmin.vbs":执行刚刚创建的VBScript文件。 -
exit /B:退出批处理脚本。 -
:gotAdmin:定义一个名为gotAdmin的标签,表示已经获得管理员权限。 -
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ):删除临时创建的VBScript文件。 -
pushd "%CD%":保存当前目录。 -
CD /D "%~dp0":切换到脚本所在的目录。 -
start notepad.exe:启动记事本程序。在这里可以替换为你想要执行的其他命令。










