Вот простой метод, который я использовал в Windows 7 - Windows 10. Обычно я просто использую команду «IF EXIST» для проверки папки Windows \ System32 \ WDI \ LogFiles. Папка WDI существует при каждой установке Windows как минимум с 7 и далее, и для доступа к ней требуются права администратора. В папке WDI всегда есть папка LogFiles. Таким образом, запуск «ЕСЛИ СУЩЕСТВУЕТ» в папке WDI \ LogFiles вернет истину, если запускается от имени администратора, и ложь, если запускается не от имени администратора. Это можно использовать в пакетном файле для проверки уровня привилегий и перехода к любым командам, которые вы хотите, на основе этого результата.
Вот краткий фрагмент примера кода:
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
в каталоге, который потребует прав администратора. это создаст файл как побочный эффект, но вы можете проверить наличие коллизий и создать уникальное имя файла в качестве обходного пути.