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:启动记事本程序。在这里可以替换为你想要执行的其他命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪你听风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值