很多时候我们常常需要通过管理员权限执行脚本,脚本可能涉及到一些受保护信息的访问,我们写个简单的脚本来更改host文件,host文件就是需要管理员权限才能访问的启动脚本时先检查是否有管理员权限,如果没有就调用授权脚本进行管理员授权打开,给用户弹出需要管理员权限是否允许。
脚本如下:

@echo offsetlocal enableextensionsREM 检查是否以管理员权限运行脚本>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"REM 如果没有以管理员权限运行脚本,将重新启动脚本以获取管理员权限if '%errorlevel%' NEQ '0' ( echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs""%temp%\getadmin.vbs"del "%temp%\getadmin.vbs"exit /B)REM 修改host文件set HOSTS_FILE=%SYSTEMROOT%\System32\drivers\etc\hostsecho 127.0.0.1 www.baidu.com >> "%HOSTS_FILE%"echo Hosts文件已成功修改!pause

还原

@echo offsetlocal enableextensionsREM 检查是否以管理员权限运行脚本>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"REM 如果没有以管理员权限运行脚本,将重新启动脚本以获取管理员权限if '%errorlevel%' NEQ '0' ( echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs""%temp%\getadmin.vbs"del "%temp%\getadmin.vbs"exit /B)REM 反修改host文件set HOSTS_FILE=%SYSTEMROOT%\System32\drivers\etc\hostsREM 删除指定行findstr /v baidu.com "%HOSTS_FILE%" > "%HOSTS_FILE%.tmp"move /y "%HOSTS_FILE%.tmp" "%HOSTS_FILE%" > nulecho Hosts文件已成功反修改!pause