Если вы предпочитаете использовать инструменты командной строки, утилиту Accesschk из пакета MS Sysinternals можно использовать для проверки, запущен ли процесс с правами администратора.
Следующие флаги полезны для этой цели:
Опция -p
(процесс) принимает имя или PID запущенного процесса.
-v
(Многословный) опция печатает Integrity Level для 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
встроенной группой безопасности.