权限自动提取
>nul 2>&1 REG.exe query "HKU\S-1-5-19" || (
ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\Getadmin.vbs"
ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\Getadmin.vbs"
"%TEMP%\Getadmin.vbs"
DEL /f /q "%TEMP%\Getadmin.vbs" 2>nul
Exit /b
)
nul 2>&1 REG.exe query “HKU\S-1-5-19”:检查是否已经拥有管理员权限。S-1-5-19是本地服务帐户的安全标识符(SID),通常用于判断是否有足够的权限。如果查询失败(意味着没有管理员权限),则执行后面的操作。
||: 表示如果前面的命令失败,则执行后面的部分。
ECHO SET UAC = CreateObject(“Shell.Application”) > “%TEMP%\Getadmin.vbs”:该行命令生成一个VBScript文件,通过Shell对象以管理员权限重新运行当前批处理文件(%~f0表示当前脚本的完整路径,runas表示以管理员权限运行)。
"%TEMP%\Getadmin.vbs": 运行刚才生成的VBScript文件,提升管理员权限。
DEL /f /q “%TEMP%\Getadmin.vbs” 2>null: 删除临时生成的VBScript文件。
Exit /b: 提权后退出当前脚本,重新运行提权的版本。
:check_network
ping *** >nul
if %errorlevel% equ 0 (
goto next
) else (
echo 网络连接中断,程序将不会运行。
pause
goto check_network
)
ping *** >nul:通过ping命令检测指定服务器(***)是否有效。如果ping成功,则不会显示输出。
if %errorlevel% equ 0:errorlevel是批处理脚本,用于记录上一个命令的退出代码的环境变量。ping命令成功时,errorlevel会为0。这里判断是否成功,如果成功,跳转到:next标签。
else:如果ping失败(即网络连接中断状态),则显示提示信息并进入pause,等待用户按键,然后重新检查网络连接。