Проверка UAC повышение прав запущенного процесса из командной строки


Как я могу использовать командную строку (cmd.exe)чтобы проверить, выполняется ли процесс с повышением прав / привилегиями контроля учетных записей?

Если бы я должен был использовать Диспетчер задач (taskmgr.exe), я мог бы проверить, добавив "виртуализацию UAC" или, в Windows 8, столбец "повышенные". (в этой статье объясняет это очень хорошо.)

но могу ли я получить эту информацию через командную строку, например, с помощью tasklist или wmic? Есть ли другие инструменты командной строки в Windows это позволит мне проверить статус высот?

мой вопрос относится ко всем ОС Windows с UAC.

11
задан kazhtaco
11.03.2023 22:46 Количество просмотров материала 2893
Распечатать страницу

3 ответа

Я не думаю, что в Windows есть что-то встроенное, что может показать эту информацию в командной строке. Даже PowerShell не помогает без вызова функций Win32.

Утилиты Sysinternals AccessChk может работать для вас:

.\accesschk.exe -p powershell.exe -e

побежал на возвышенности, показывает:

[3256] powershell.exe
  Medium Mandatory Level [No-Write-Up, No-Read-Up]
  RW superUserPC2\peter
  RW NT AUTHORITY\SYSTEM
[3660] powershell.exe
  High Mandatory Level [No-Write-Up, No-Read-Up]
  RW BUILTIN\Administrators
  RW NT AUTHORITY\SYSTEM

вы можете видеть, что второй PowerShell (3660) работает с повышенными привилегиями, потому что он имеет High Mandatory Level

но если вы выполняете эту команду как обычный пользователь, вы get:

[3256] powershell.exe
  Medium Mandatory Level [No-Write-Up, No-Read-Up]
  RW superUserPC2\peter
  RW NT AUTHORITY\SYSTEM
Error opening [3660] powershell.exe:
Access is denied.

тем не менее вы знаете, второй PowerShell работает с повышенными привилегиями, потому что вы получили Access denied для него.

.\accesschk.exe -p -f powershell -e

дает вам еще больше информации

1
отвечен Peter Hahndorf 2023-03-13 06:34

самый чистый способ проверить права администратора с помощью. CMD сценарий, который я нашел, это что-то вроде этого:

@echo off

REM  Calling verify with no args just checks the verify flag,
REM   we use this for its side effect of setting errorlevel to zero
verify >nul

REM  Attempt to read a particular system directory - the DIR
REM   command will fail with a nonzero errorlevel if the directory is
REM   unreadable by the current process.  The DACL on the
REM   c:\windows\system32\config\systemprofile directory, by default,
REM   only permits SYSTEM and Administrators.
dir %windir%\system32\config\systemprofile >nul 2>nul

REM  Use IF ERRORLEVEL or %errorlevel% to check the result
if not errorlevel 1 echo has Admin privs
if     errorlevel 1 echo has only User privs

этот метод использует только CMD.exe builtins, так что это должно быть очень быстро. Он также проверяет фактические возможности процесса, а не для проверки идентификаторов безопасности или членства в группах, поэтому эффективное разрешения тестируется. И это работает еще в Windows 2003 и XP. Обычные пользовательские процессы или процессы nonelevated не каталог зонд, где как администратор или повышенные процессы успешно.

1
отвечен William 2023-03-13 08:51

вы можете проверить с tasklist команда

Try tasklist /v который даст вам процесс, процесс, который имеет какие права

синтаксис:

tasklist / v

Пример Использования:

задач.ехе /Fi системы "имени экв /" в

, в котором будут перечислены процессы, запущенные пользователем системы.

0
отвечен BlueBerry - Vignesh4303 2023-03-13 11:08

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх