如何检查用户是否是管理员?

时间:2013-04-12 02:56:33

标签: batch-file cmd

由于我经常使用批处理脚本,我花了大量时间在网上搜索纯批量实现,不依赖于错误级别读取,以检查管理权限当前或指定的用户。

如何检查用户是否为管理员?

注意:这个问题不重复,因为我不想依赖错误级别的阅读。

2 个答案:

答案 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
   )