办法1 写入文件法
向System32文件夹写入临时文件,若能写入成功,则说明批处理具有
管理员权限,否则说明不具有。
代型闭码如下:C/C++ code @ECHO OFF Rem 创建文件路径 set TempFile_Name=%SystemRoot%\System32\BatTestUACin_SysRt%Random%.batemp echo %TempFile_Name% Rem 写入文件 ( echo "BAT Test UAC in Temp">%TempFile_Name% ) 1>nul 2>租租穗nul Rem 判断写入是否成功 if exist %TempFile_Name% ( echo 正在以管理员身份运行当前批处理 ) else ( echo 没有以管理员身份运行当前批处理 ) pause Rem 删除临时文件 del %TempFile_Name%1>nul 2>nul echo 按空格键退出…… pause >nul 方法2 窗口标题判断法
以管理员身份运行的弊卜批处理,设置标题后,标题前方会提示 "管理员: " ,可判断特定窗口标题所对应的进程名是否为cmd.exe 来确认批处理是否以管理员身份运行。代码如下:
C/C++ code @echo off title BAT setlocal EnableDELAYEDEXPANSION Rem 设置标志变量 set UAC=0 Rem 获取tasklist命令输出 For /f "usebackq delims=="%%i In (`tasklist /fi "WINDOWT
ITLE eq 管理员: BAT"`) Do ( set"cmdline=%%i"set"cmdline=!cmdline:~0,7!"if"!cmdline!"=="cmd.exe" ( set UAC=1 ) ) if"%UAC%"=="1" ( echo 正在以管理员身份运行当前批处理 ) else ( echo 没有以管理员身份运行当前批处理 ) :End pause exit