Windows Tips & News

Як перевірити пакетний файл, якщо ви використовуєте його з підвищеними можливостями

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

Коли деяка консольна програма виконує свою роботу належним чином, змінна %errrorlevel% зберігає 0 як своє значення.
Відкрийте новий екземпляр командного рядка і запустіть команду "dir". Після цього надрукуйте значення %errorlevel% за допомогою команди "echo":

реж. echo %errorlevel%

Він видасть 0 як вихід.

Тепер давайте спробуємо виконати команду, яка вимагає підвищення, із звичайного вікна командного рядка без підвищення. Наприклад, давайте спробуємо відкриті файли команда, яка вимагає прав адміністратора.
Якщо ви надрукуєте значення %errorlevel%, воно не буде 0, оскільки команда openfiles не зможе показати відкриті файли без прав адміністратора.



Однак, якщо ви запускаєте його з підвищеного командного рядка (ось як відкрити командний рядок адміністратора), він покаже вам відкриті файли та поверне 0, як і очікувалося.

Використовуючи цю функцію, можна реалізувати просту перевірку в пакетному файлі:

@echo off. openfiles > NUL 2>&1 якщо НЕ %ERRORLEVEL% EQU 0 перейти до NotAdmin echo Привіт із підвищеного командного рядка перейти до End :NotAdmin echo Цей командний рядок НЕ ПІДВИЩЕНИЙ :End. 

Зауважте, що я використовую перенаправлення виводу, щоб придушити будь-який вихід з команди openfiles. У частині "> NUL 2>&1" вихідні дані команди за замовчуванням перенаправляються в нікуди (NUL), а вихідні дані про помилку перенаправляються на стандартний вихід, тобто також на NUL.
Замість команди openfiles можна використовувати будь-яку команду, яка вимагає підвищення, наприклад, the чиста сесія команда.
Це воно.

KB5003214 спричиняє аварійне завершення роботи панелі завдань із ввімкненими новинами та інтересами

KB5003214 спричиняє аварійне завершення роботи панелі завдань із ввімкненими новинами та інтересами

26 травня Microsoft випустила KB5003214, виправлення, яке націлено на версії Windows 10 2004, 20H...

Читати далі

Edge Dev 90.0.810.1 випускається з вертикальними вкладками, які можна змінювати

Edge Dev 90.0.810.1 випускається з вертикальними вкладками, які можна змінювати

Залиште відповідьMicrosoft є звільнення Edge Dev 90.0.810.1 для інсайдерів із багатьма виправленн...

Читати далі

Windows 10 Build 19042.487 (20H2) виходить на канали бета-версії та попереднього перегляду випуску

Windows 10 Build 19042.487 (20H2) виходить на канали бета-версії та попереднього перегляду випуску

1 відповідьMicrosoft випускає Windows 10 Build 19042.487 з 20Н2 відділення для інсайдерів у канал...

Читати далі