批量管理员权限检查

Batch administrator permission check

早上好,

我正在尝试验证批处理是否在管理员权限下执行。 我找到了这个命令来验证:

openfiles >nul 2>&1
if NOT %errorLevel% == 0
...

或网络会话而不是打开文件。

如果我以管理员身份打开命令提示符,一切正常,return如果我使用普通命令提示符,则出现错误。

当我尝试在单个提升权限的命令提示符下执行两个批处理时出现问题; 第一批执行正确,第二批return权限错误。

我做错了什么?

它不像您使用的方法那么紧凑,但我过去多次成功使用的另一种方法如下:

IF EXIST %SYSTEMROOT%\SYSTEM32\WDI\LOGFILES GOTO GOTADMIN
[Whatever commands you want to run if not running as admin]
:GOTADMIN
[Whatever commands you want to run if running as admin]

这是可行的,因为默认情况下,Windows 只允许以提升的权限访问 WDI 目录。因此,通过告诉脚本在该目录中查找应该存在的另一个目录,它可以用于检测它是否 运行ning 为管理员。如果是,它将看到 LOGFILES 存在并且 return 为真。如果否,则不允许它访问 WDI 文件,因此它不会看到 LOGFILES 存在并将 return False。

诚然,这仅在 WDI 目录的默认安全权限未更改时有效,但根据我的经验,在大多数安装中这些权限不太可能被更改。它还要求 WDI 目录中的 LOGFILES 目录没有被删除或重命名,但我发现这不太可能发生,因为它是 WDI 目录目的的组成部分。

我已经测试并确认它可以在 Windows 7、8、8.1 和 10 上工作。我没有在 Vista 上测试它,但我认为它可以工作,因为 Vista 与 7 非常相似。显然,在 XP 上使用此方法没有任何好处,因为在 Windows.

版本的默认情况下,所有命令提示符的最大高度为 运行