Я пытаюсь найти способ достоверно показать, работает ли командная строка с повышенными правами из командной строки (CMD.exe) в стандартной установке Windows. Большинство методов, которые я видел, основаны на сторонних инструментах, стороннем программном обеспечении или индикаторах прокси, которые не обязательно могут быть надежными или совместимыми во всех системах. Я ищу что - то более по линии получения самой системы , чтобы явно указать , что текущая сессия повышается, или показать с помощью командной строки , что текущий процесс находится в стадии запуска на уровне целостности High.

Примером (но не обязательно абсолютным определением) чего-либо, что было бы приемлемым, была бы команда, которая получает и отображает текущий PID, за которым следует другая команда (если не такая же), которая показывает уровень целостности для этого PID. Команды, которые основаны на значениях данного вывода (например, если предполагается, что сеанс повышен, если вы можете выполнить определенные команды, или определение состояния повышения на основе строки заголовка окна), неприемлемы для этой цели.

Решения должны быть совместимы вплоть до Windows 7 Pro SP0. Хотя эти системы имеют PowerShell, это не вариант для этой цели. Программное обеспечение, не встроенное в ОС, не является опцией.

2 ответа2

0

Если вы четко хотите увидеть, повышен ли сеанс, и не используете его в сценарии, просто проверьте заголовок. Там будет написано «Администратор»: в заголовке также указано, что командная строка запущена с повышенными правами.

Кроме того, cmd, который запускается с повышенными правами, запускается не в вашем пользовательском каталоге, а в папке c:\windows\system32.

По сценарию вы можете запускать системные команды, требующие повышения прав, например "at". Это не удастся с сообщением Access is denied. и% errorlevel% будет установлен в 1, что также позволяет проверить его с помощью пакетного скрипта. В противном случае% errorlevel% будет 0.

0

Хороший ответ нашел в дубликате, здесь.

Вы можете использовать whoami с параметром /groups чтобы увидеть разрешения, назначенные текущему пользователю. Эти разрешения также будут зависеть от сеанса - то есть: если урок не повышен, у whoami /groups будет отсутствовать группа, назначенная для повышенных сеансов. Использование команды whoami и параметра /groups описано в статье TechNet для Whoami.

Группу, которую вам нужно искать, это SID S-1-16-12288 , также известный как "Высокий обязательный уровень". Вы можете найти более подробную информацию в статье TechNet « Известные идентификаторы безопасности в операционных системах Windows».

Если вы хотите , чтобы упростить задачу для себя, вместо того, чтобы визуально поиска по всем группам в списке, вы можете трубы выхода , чтобы find с синтаксисом ниже:

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

Это выведет строку, которая включает SID, если найден, или выдаст пустой вывод, если SID не найден. (В последнем случае это будет указывать на не повышенный сеанс.) В сценарии вы также можете проверить уровень ошибок find чтобы определить, была ли найдена группа. Уровень ошибки, равный нулю, указывает на успешное обнаружение (сеанс с повышенными правами), а уровень ошибки, равный единице, указывает на то, что группа не была найдена (сеанс без повышенных прав).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .