Если вы предпочитаете использовать инструменты командной строки, утилиту Accesschk из пакета MS Sysinternals можно использовать для проверки, запущен ли процесс с правами администратора.
Следующие флаги полезны для этой цели:
Опция -p
(процесс) принимает имя или PID запущенного процесса.
Параметр -v
(подробный) печатает уровень целостности Windows
Параметр -q
(тихий) предотвращает печать информации о версии.
Параметр -f
(полный) также можно использовать для предоставления еще большей информации о процессе (ах) (сведения о токене безопасности пользователей, групп и привилегий), но этот уровень дополнительных сведений не требуется для проверки повышенных привилегий.
пример
Перечислите привилегии всех запущенных процессов cmd
:
> accesschk.exe -vqp cmd
[5576] cmd.exe
Medium Mandatory Level [No-Write-Up, No-Read-Up]
RW ICS\Anthony
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
[8224] cmd.exe
Medium Mandatory Level [No-Write-Up, No-Read-Up]
RW ICS\Anthony
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
Error opening [6636] cmd.exe:
Access is denied.
Здесь мы видим, что есть три cmd
процесса, которые я запустил. Первые два имеют средний обязательный (целостный) уровень и отображаются как работающие под моей учетной записью домена, что указывает на то, что эти процессы были запущены без прав администратора.
Однако последний процесс (PID 6636) был запущен с повышенными разрешениями, поэтому моя непривилегированная команда не может прочитать информацию об этом процессе. Запуск с расширенными правами доступа accesschk
и явное указание его PID выводит следующую информацию:
> accesschk.exe -vqp 6636
[6636] cmd.exe
High Mandatory Level [No-Write-Up, No-Read-Up]
RW BUILTIN\Administrators
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
Теперь мы видим, что уровень целостности высокий и этот процесс выполняется в рамках встроенной группы безопасности « Administrators
».