首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检测CMD是否以管理员身份运行/是否具有提升的权限?

如何检测CMD是否以管理员身份运行/是否具有提升的权限?
EN

Stack Overflow用户
提问于 2011-11-03 02:50:13
回答 10查看 140.9K关注 0票数 125

在批处理文件中,我想测试我是否以管理员/提升的权限运行。

当选择“以管理员身份运行”时,用户名不会更改,因此这不起作用。

如果有一个通用的命令,它没有作用,但需要管理权限,那么我可以运行它并检查错误代码,以便测试权限。到目前为止,我还没有找到这样的命令。我发现的命令似乎返回一个单独的、非特定的错误代码,它可以指示任何东西,而且它们容易因为各种原因而失败。

我只关心Windows7,尽管支持更早的操作系统会更好。

EN

回答 10

Stack Overflow用户

发布于 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上运行,但我不确定更早的版本。)

票数 28
EN

Stack Overflow用户

发布于 2016-08-10 01:14:51

和其他人之前放的差不多,但只是一个一行,可以放在批处理命令的开头。(嗯,通常在@echo off之后。)

net.exe session 1>NUL 2>NUL || (Echo This script requires elevated rights. & Exit /b 1)
票数 27
EN

Stack Overflow用户

发布于 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

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7985755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档