Windows 批处理管理员权限检查

Windows 批处理管理员权限检查,windows,batch-file,permissions,administrator,Windows,Batch File,Permissions,Administrator,早上好 我正在尝试验证是否使用管理员权限执行批处理。 我发现此命令用于验证: openfiles >nul 2>&1 if NOT %errorLevel% == 0 ... 或net会话,而不是openfiles 如果我以管理员身份打开命令提示符,并且如果我使用普通命令提示符,则返回一个错误,则一切正常 当我试图在一个提升的权限命令提示符下执行两个批处理时,问题出现了; 第一批正确执行,第二批返回权限错误 我做错了什么?它不像您使用的方法那么紧凑,但我过去多次成功使用的另

早上好

我正在尝试验证是否使用管理员权限执行批处理。 我发现此命令用于验证:

openfiles >nul 2>&1
if NOT %errorLevel% == 0
...
或net会话,而不是openfiles

如果我以管理员身份打开命令提示符,并且如果我使用普通命令提示符,则返回一个错误,则一切正常

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


我做错了什么?

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

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目录。因此,通过告诉脚本在该目录中查找另一个应该存在的目录,它可以用来检测它是否以管理员身份运行。如果是,它将看到日志文件存在并返回True。如果否,则不允许访问WDI文件,因此它将看不到日志文件存在,并返回False

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


我已经测试并确认它可以在Windows7、8、8.1和10上运行。我还没有在Vista上测试过它,但我认为它可以工作,因为Vista与7非常相似。显然,在XP上使用此方法没有任何好处,因为默认情况下,所有命令提示都在该版本的Windows上以最大高度运行。

显示的命令没有问题,问题出在其他地方。我会使用条件执行而不是错误级别检查
openfiles>nul2>&1 | | | |无论什么
谢谢你的回复,我试过了,但都是一样的。问题仍然存在于你没有显示的代码的其他地方。我的暗示与问题无关。请阅读a是什么。无论我运行了多少次,发布的代码对我来说都能正常工作。您需要提供更多详细信息,以便我们重现问题。由于OP没有提供足够的信息,此问题可能已结束。我建议你把这篇文章作为一个答案转载到更关注主题的地方,更容易被需要它的读者找到,也不太可能被删除。谢谢你的回复,对于回复的延迟表示抱歉。这个检查工作正常!