Как проверить пакетный файл, если вы используете его с повышенными правами

Иногда полезно проверить командный файл, был ли он запущен из командной строки с повышенными привилегиями или от имени администратора. Я хотел бы поделиться с вами уловкой, которую я использую для этого. Основная идея моего трюка основана на значении специальной переменной окружения% errorlevel%, в которой хранится код выхода для большинства консольных приложений и команд. Давайте посмотрим на это в действии.

Когда какое-либо консольное приложение правильно завершает свою работу, переменная% errrorlevel% сохраняет в качестве своего значения 0.
Откройте новый экземпляр командной строки и выполните команду «dir». После этого распечатайте значение% errorlevel% с помощью команды «echo»:

реж эхо% errorlevel%

На выходе будет 0.
dir errorlevel
Теперь давайте попробуем выполнить команду, требующую повышения прав, из обычного окна командной строки без повышенных прав. Например, давайте попробуем команду openfiles, которая требует прав администратора.
Если вы напечатаете значение% errorlevel%, оно не будет равно 0, потому что команда openfiles не сможет показать открытые файлы без прав администратора.
openfiles errorlevel 1
Однако, если вы запустите его из командной строки с повышенными привилегиями (вот как открыть командную строку администратора), он покажет вам открытые файлы и вернет 0, как и ожидалось.
уровень ошибки openfiles 0
Используя эту функцию, можно реализовать простую проверку в командном файле:

@ эхо выключено openfiles> NUL 2> & 1 если НЕ% ERRORLEVEL% EQU 0 перейти к NotAdmin echo Hello из командной строки с повышенными привилегиями goto End : NotAdmin echo Эта командная строка НЕ ​​ПОДНИМАЕТСЯ :Конец 

Обратите внимание, что я использую перенаправление вывода, чтобы подавить любой вывод команды openfiles. В части «> NUL 2> & 1» вывод команды по умолчанию перенаправляется в никуда (NUL), а вывод ошибки перенаправляется на стандартный вывод, то есть тоже на NUL.
Вместо команды openfiles вы можете использовать любую команду, требующую повышения прав, например команду net session.
Вот и все.

Добавить комментарий

Ваш адрес email не будет опубликован.