3

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

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

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

4

2 回答 2

2

由于没有找到不尝试将文件写入系统目录或依赖的批处理脚本errorlevel,我编写了以下脚本以在其他脚本中使用或作为独立工具使用。

您可以更改代码以在脚本中工作,或将用户名传递给程序以确定用户是否为管理员。如果没有指定用户名,程序会检查当前用户的管理员身份。

@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
于 2013-04-12T02:56:32.643 回答
0

有一种简单的方法可以检查管理员权限。只需使用 OPENFILES 命令并检查状态。它需要管理员权限,因此您可以将输出通过管道传输到 nul 并检查结果。我建议您使用 2>nul,因为 2012 Server 和 Windows 8 返回 ERRORLEVEL 0 但输出“错误:无法检索数据”。这对我来说似乎是错误的(没有错误;但仍然是错误消息),但是......

OPENFILES >nul 2>nul
IF ERRORLEVEL 1 (
   ECHO.Right click on this file and select 'Run as administrator'.
   PAUSE
   GOTO :eof
   )
于 2013-04-12T03:13:29.187 回答