Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何检查用户是否是管理员?_Batch File_Cmd - Fatal编程技术网

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

Batch file 如何检查用户是否是管理员?,batch-file,cmd,Batch File,Cmd,由于我经常使用批处理脚本,因此我花了大量时间在web上搜索纯批处理实现,,它不依赖于错误级别的读取来检查当前或指定用户的管理权限 如何检查用户是否为管理员 注意:这个问题不是重复的,因为我不想依赖于errorlevel阅读。由于没有找到一个批处理脚本,该脚本既没有尝试将文件写入系统目录,也没有依赖于errorlevel,我编写了以下脚本,以便在其他脚本中使用或作为独立工具使用 您可以更改代码以在脚本中工作,或者将用户名传递给程序以确定用户是否为管理员。如果未指定用户名,程序将检查当前用户的管理员

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

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


注意:这个问题不是重复的,因为我不想依赖于errorlevel阅读。

由于没有找到一个批处理脚本,该脚本既没有尝试将文件写入系统目录,也没有依赖于
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

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


@丹尼·贝克特:谢谢你的更正!没问题!欢迎使用堆栈溢出!:)记住,将问题和答案分开;)@丹尼·贝克特:谢谢!我会尽力的打扰一下你应该把这个代码放在你的问题“这就是我现在拥有的”;否则,它可能会被误认为是答案!(为什么有人在已经有答案的情况下发布问题?@Aacini:我之所以发布此消息,是出于对使用批处理的其他人的礼貌,因为我找不到批处理实现来确定用户是否是管理员。当您发布问题时,您可以选中“回答您自己的问题”复选框…这似乎是一个有效的答案,并且不像我的脚本那样创建临时文件…这看起来很整洁,但我担心这可能会对启用“维护对象列表”标志的繁忙系统造成性能影响。(至少我不会冒险)我在输入bat文件时这样做过一次。。。不是每一个需要管理员的操作都需要一次。所以我不认为有任何明显的性能影响。我认为我有一个脚本,用一行程序检查管理员权限。如果我找到了,我会在早上发布一个答案。我认为这有点像是检查使用icacls读取system32权限的通过与否。@rojo:我期待着您的回答!:)@Christian.K:我在寻找一个通用的、非sinlge命令/错误级别相关的解决方案,它只在批处理中编写。。。
OPENFILES >nul 2>nul
IF ERRORLEVEL 1 (
   ECHO.Right click on this file and select 'Run as administrator'.
   PAUSE
   GOTO :eof
   )