在批处理文件中,我想测试我是否以管理员/提升的权限运行。
当选择“以管理员身份运行”时,用户名不会更改,因此这不起作用。
如果有一个通用的命令,它没有作用,但需要管理权限,那么我可以运行它并检查错误代码,以便测试权限。到目前为止,我还没有找到这样的命令。我发现的命令似乎返回一个单独的、非特定的错误代码,它可以指示任何东西,而且它们容易因为各种原因而失败。
我只关心Windows7,尽管支持更早的操作系统会更好。
发布于 2011-11-03 04:51:52
我喜欢Rushyo关于使用AT的建议,但这是另一种选择:
whoami /groups | findstr /b BUILTIN\Administrators | findstr /c:"Enabled group" && goto :isadministrator
此方法还允许您根据需要区分非管理员和非提升管理员。未提升的管理员在组列表中仍有BUILTIN\Administrators,但未启用。
但是,这在一些非英语语言系统上不起作用。相反,尝试
whoami /groups | findstr /c:" S-1-5-32-544 " | findstr /c:" Enabled group" && goto :isadministrator
(这应该可以在Windows7上运行,但我不确定更早的版本。)
发布于 2016-08-10 01:14:51
和其他人之前放的差不多,但只是一个一行,可以放在批处理命令的开头。(嗯,通常在@echo off之后。)
net.exe session 1>NUL 2>NUL || (Echo This script requires elevated rights. & Exit /b 1)
发布于 2013-07-23 15:30:29
在Vista、Win 7和更高版本上,执行此操作的最简单方法是枚举令牌组并查找当前完整性级别(如果只有组成员身份很重要,则为管理员sid ):
检查我们是否正在运行提升:
whoami /groups | find "S-1-16-12288" && Echo I am running elevated, so I must be an admin anyway ;-)
检查我们是否属于本地管理员:
whoami /groups | find "S-1-5-32-544" && Echo I am a local admin
检查我们是否属于域管理员:
whoami /groups | find "-512 " && Echo I am a domain admin
下面的文章列出了SIDs窗口使用的完整性级别:http://msdn.microsoft.com/en-us/library/bb625963.aspx
https://stackoverflow.com/questions/7985755
复制相似问题