由于我经常使用批处理脚本,我花了大量时间在网上搜索纯批量实现,不依赖于错误级别读取,以检查管理权限当前或指定的用户。
如何检查用户是否为管理员?
注意:这个问题不重复,因为我不想依赖错误级别的阅读。
答案 0 :(得分:1)
如果没有找到没有尝试将文件写入系统目录或依赖errorlevel
的批处理脚本,我编写了以下脚本以便在其他脚本中使用或作为独立工具使用。
您可以更改代码以在脚本中工作,或将用户名传递给程序以确定用户是否为admin。如果未指定用户名,程序将检查当前用户的管理员。
@echo off
setlocal EnableDelayedExpansion
if "%~1" == "" (set user=%username%) ELSE (set user=%~1)
net user %user% | find "Local Group Memberships">temp.tmp
for /f %%a in ('findstr /i "Administrators" temp.tmp') do (
echo.
echo %user% is Admin...
echo.
set isadmin=y
del temp.tmp
pause
goto:eof
)
echo.
echo %user% is not Admin...
echo.
set isadmin=n
del temp.tmp
pause
goto:eof
答案 1 :(得分:0)
有一种简单的方法可以检查管理员权限。只需使用OPENFILES命令并检查状态。它需要Admin权限,因此您只需将输出通过管道传输到nul并检查结果。我建议您使用2> nul,因为2012 Server和Windows 8返回ERRORLEVEL 0但输出“ERROR:无法检索数据”。这对我来说似乎不对(没有错误;但仍然是错误信息),但是......
OPENFILES >nul 2>nul
IF ERRORLEVEL 1 (
ECHO.Right click on this file and select 'Run as administrator'.
PAUSE
GOTO :eof
)