批处理脚本:如何检查管理员权限

批处理脚本:如何检查管理员权限

如何检查当前批处理脚本是否具有管理员权限?

我知道如何让它使用 runas 调用自身,但不知道如何检查管理员权限。我见过的唯一解决方案是粗暴的黑客行为。

答案1

你可以做这样的事情

mkdir "%windir%\system32\test" 2>nul
if "%errorlevel%" == "0" (rmdir "%windir%\system32\test" & echo Is admin) else (echo Not an Admin)

虽然不是最好的方法,但对我来说一直很有效。

答案2

经过一些研究(主要是 SO [1]),我发现这net并不总是一个好的解决方案,它可能会显示假阴性结果。但是fsutilWinXP 到 Win10 都有。值得阅读整个富有洞察力的答案“更多问题”针对这个问题批处理脚本:如何检查管理员权限那里。

以下是针对匆忙用户的简短答案:

fsutil dirty query %systemdrive% >nul
if %errorlevel% == 0 (
    echo Running with admin rights.
) else (
    echo Running without
)

[1]我的实际问题是海拔,但是非侵入性检查是其中的一部分:

答案3

这是我能想到的最好的解决方案,使用标准命令:

net user %username% | findstr /r Administrator.
if %errorlevel% == 1 (
echo This is not an admin account
) else (
echo This is an admin account
)

答案4

你只需要在需要提升的批次顶部加上这一行。强调“一行”

nul 2>&1 fsutil 脏查询 %systemdrive% || echo CreateObject^("Shell.Application"^).ShellExecute "%~0", "ELEVATED", "", "runas", 1 > "getadmin.vbs" && "getadmin.vbs" && exit /b

相关内容