在命令提示符下检查海拔

在命令提示符下检查海拔

我正在尝试找到一种方法,在 Windows 安装中,通过命令提示符 (CMD.exe) 权威地显示命令提示符是否以提升权限运行。我见过的大多数方法都依赖于非本机工具、第三方软件或代理指示器,这些指示器可能不一定可靠或兼容所有系统。我正在寻找一种更接近于让系统本身明确说明当前会话提升,或者通过命令行显示当前进程正在以高完整性级别运行。

可以接受的示例(但不一定是绝对定义)是获取并显示当前 PID 的命令,后面跟着另一个显示该 PID 完整性级别的命令(如果不是相同的话)。依赖于给定输出含义的命令(例如:如果您可以运行某些命令,则假设会话已提升,或者根据窗口的标题栏确定提升状态)不适用于此目的。

解决方案应兼容 Windows 7 Pro SP0。虽然这些系统确实有 PowerShell,但它不是此目的的选项。非内置于操作系统的软件不是一种选择。

答案1

在副本中找到了一个很好的答案,这里

您可以使用whoami参数/groups查看分配给当前用户的权限。这些权限也将是特定于会话的 - 即:如果会话未提升,whoami /groups则将缺少分配给提升会话的组。命令whoami/groups参数的用法记录在 TechNet 文章中我是谁

您需要查找的组是 SID S-1-16-12288,也称为“高强制级别”。您可以在 TechNet 文章中找到更多详细信息,Windows 操作系统中众所周知的安全标识符

如果您想简化自己的任务,而不必直观地搜索列出的所有组,则可以find使用以下语法将输出传输到:

whoami /groups | find "S-1-16-12288"

如果找到 SID,则输出包含该 SID 的行;如果未找到 SID,则输出空白。(在后一种情况下,这表示会话未升级。)在脚本中,您还可以检查错误级别以find确定是否找到该组。错误级别为零表示成功找到(升级会话),而错误级别为一表示未找到该组(未升级会话)。

答案2

如果您想要清楚地查看会话是否已提升权限,但又不想在脚本中使用它,只需检查标题即可。标题中也会显示 Administrator:,表示命令提示符正在以提升权限运行。

此外,以提升权限启动的 cmd 不会在您的用户目录中启动,而是在 c:\windows\system32 文件夹中启动。

在此处输入图片描述

在此处输入图片描述

就脚本而言,您可以运行需要提升权限的系统命令,例如“at”。它会失败并显示一条消息Access is denied.,%errorlevel% 将设置为 1,这样您也可以使用批处理脚本进行检查。否则 %errorlevel% 将为 0。

相关内容