Sprawdzanie podniesienia UAC uruchomionego procesu z wiersza polecenia

2

Jak mogę użyć wiersza polecenia (cmd.exe), aby sprawdzić, czy proces działa z podniesieniem / podniesieniem uprawnień UAC?

Gdybym używał Menedżera zadań (taskmgr.exe), mógłbym sprawdzić, dodając „Wirtualizację UAC” lub, w systemie Windows 8, kolumnę „Podwyższone”. ( Ten artykuł wyjaśnia to całkiem dobrze.)

Ale czy mogę uzyskać te informacje za pomocą wiersza polecenia, np. z listą zadań lub wmic? Czy w systemie Windows są wbudowane inne narzędzia wiersza polecenia, które pozwalają mi sprawdzić status podniesienia?

Moje pytanie dotyczy wszystkich systemów operacyjnych Windows z kontrolą konta użytkownika.

kazhtaco
źródło

Odpowiedzi:

1

Nie sądzę, aby w systemie Windows było coś wbudowanego, które mogłoby wyświetlać te informacje w wierszu poleceń. Nawet PowerShell nie wydaje się pomagać bez wywoływania funkcji Win32.

SysInternals AccessChk może działać dla ciebie:

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

wzrósł, pokazuje:

[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

Widać, że drugi PowerShell (3660) jest uruchomiony, ponieważ ma High Mandatory Level

ale jeśli uruchomisz to polecenie jako standardowy użytkownik, otrzymasz:

[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.

Nadal wiesz, że drugi PowerShell jest uruchomiony, ponieważ masz Access denied dla tego.

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

daje jeszcze więcej informacji

Peter Hahndorf
źródło
1

Najczystszym sposobem sprawdzenia uprawnień administratora za pomocą skryptu CMD, który znalazłem, jest coś takiego:

@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

Ta metoda używa tylko wbudowanych CMD.exe, więc powinna być bardzo szybka. Sprawdza także rzeczywiste możliwości procesu, zamiast sprawdzać identyfikatory SID lub członkostwa w grupach, więc efektywny pozwolenie jest testowane. A to działa już w Windows 2003 i XP. Normalne procesy użytkownika lub nieelewowane procesy zawodzą sondę katalogową, w której udaje się administrator lub procesy podwyższone.

William
źródło
0

Możesz to sprawdzić Lista zadań dowództwo

Próbować tasklist /v który da ci proces, który proces ma prawa

Składnia :

tasklist / v

Wykorzystanie próbki :

tasklist.exe / FI „nazwa użytkownika eq system” / v

który wyświetli listę procesów uruchomionych przez użytkownika systemu.

BlueBerry - Vignesh4303
źródło
1
Dzięki, ale nie widzę żadnej różnicy między wyświetlaniem UAC z podwyższonym poziomem a procesami bez podwyższenia. Na przykład uruchomiłem jeden calc.exe z jednym bez podniesienia, a „tasklist / v | findstr calc” mówi mi:. calc.exe 3988 Console 1 12,916 K Running compname\username 0:00:00 Calculator . calc.exe 4704 Console 1 12,924 K Running compname\username 0:00:00 Calculator
kazhtaco