Ось простий метод, який я використовував у Windows 7 та Windows 10. В основному я просто використовую команду "ЯКЩО Є Є" для перевірки папки Windows \ System32 \ WDI \ LogFiles. Папка WDI існує при кожному встановленні Windows, щонайменше, від 7, і для доступу до неї потрібні права адміністратора. Папка WDI завжди має папку LogFiles всередині неї. Отже, запуск "IF EXIST" у папці WDI \ LogFiles повернеться true, якщо запустити як адміністратор, і false, якщо не запустити як адміністратор. Це можна використовувати у пакетному файлі для перевірки рівня привілеїв та розгалуження до тих команд, які ви бажаєте на основі цього результату.
Ось короткий фрагмент коду прикладу:
IF EXIST %SYSTEMROOT%\SYSTEM32\WDI\LOGFILES GOTO GOTADMIN
(Commands for running with normal privileges)
:GOTADMIN
(Commands for running with admin privileges)
Майте на увазі, що цей метод передбачає, що дозволи в безпеці за замовчуванням не були змінені в папці WDI (що навряд чи трапляється в більшості ситуацій, але, будь ласка, дивіться застереження №2 нижче). Навіть у цьому випадку просто питання зміни коду, щоб перевірити наявність іншого загального файлу / папки, що вимагає доступу адміністратора (System32 \ config \ SAM може бути хорошим альтернативним кандидатом), або ви навіть можете створити свій власний спеціально для цього призначення.
Існує два застереження щодо цього методу:
Відключення UAC, ймовірно, порушить його через простий факт, що все одно буде працювати як адміністратор.
Спроба відкрити папку WDI в Провіднику Windows, а потім натиснути «Продовжити», коли буде запропоновано, додадуть постійні права доступу до цього облікового запису користувача, таким чином порушуючи мій метод. Якщо це станеться, це можна виправити, видаливши обліковий запис користувача із дозволів безпеки папки WDI. Якщо з будь-якої причини користувач ПОВИНЕН мати можливість отримати доступ до папки WDI за допомогою Провідника Windows, то вам доведеться змінити код, щоб перевірити іншу папку (як зазначено вище, створення власної спеціально для цієї мети може бути хорошим вибором) .
Тож, правда, мій метод не є ідеальним, оскільки його можна зламати, але це досить швидкий метод, який легко реалізувати, однаково сумісний із усіма версіями Windows 7, 8 та 10, і за умови, що я пам'ятаю про згадані застереження. була на 100% ефективна для мене.
echo > somefile
в каталозі, який вимагатиме адміністраторських приватних даних. він створить файл як побічний ефект, але ви можете перевірити на предмет зіткнень та створити унікальне ім'я файлу як вирішення.