以管理员身份运行Windows系统中bat脚本文件中指定的程序
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
在Windows系统中,经常要用到bat脚本一些东西,有些时候制作了脚本放在自动启动中,就会因为权限不足造成无法启动或双击的时候也会有权限不够,就得想办法让bat脚本也得具备管理员权限运行!
以管理员身份运行Windows系统中bat脚本文件中指定的程序
以下面作为实例来说明
@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
以上代码的详细解释如下:
1、@echo off:关闭命令回显,使脚本运行时不显示执行的命令。
2、:: 检查是否以管理员身份运行:注释,说明接下来的代码是用来检查权限的。
3、>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system":使用cacls.exe命令检查当前用户是否有访问系统目录的权限。
>nul 2>&1表示将标准输出和错误输出都重定向到空设备(不显示在屏幕上)。
4、if '%errorlevel%' NEQ '0':判断上一条命令的返回值(%errorlevel%)是否不等于0。如果不等于0,说明没有管理员权限。
5、( echo 请求管理员权限... & goto UACPrompt ):如没有管理员权限,输出提示信息并跳转到UACPrompt标签。
6、else ( goto gotAdmin ):如果有管理员权限,跳转到gotAdmin标签。
7、:UACPrompt:定义一个名为UACPrompt的标签,用于请求管理员权限。
8、echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs":创建一个VBScript文件,用于请求管理员权限。
9、echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs":向VBScript文件中添加一行代码,用于以管理员身份重新运行脚本。
10、"%temp%\getadmin.vbs":执行刚刚创建的VBScript文件。
11、exit /B:退出批处理脚本。
12、:gotAdmin:定义一个名为gotAdmin的标签,表示已经获得管理员权限。
13、if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ):删除临时创建的VBScript文件。
14、pushd "%CD%":保存当前目录。
15、CD /D "%~dp0":切换到脚本所在的目录。
16、start notepad.exe:启动记事本程序。在这里可以替换为你想要执行的其他命令。
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

