Si prefiere usar herramientas de línea de comandos, la utilidad Accesschk de la suite MS Sysinternals se puede usar para verificar si un proceso se está ejecutando con permisos de administrador.
Las siguientes banderas son útiles para este propósito:
La -p
opción (proceso) acepta el nombre o el PID de un proceso en ejecución.
La -v
opción (detallada) imprime el nivel de integridad de Windows
La -q
opción (silenciosa) evita que se imprima la información de la versión.
La -f
opción (completa) también se puede utilizar para proporcionar aún más información sobre los procesos (detalles de token de seguridad de usuarios, grupos y privilegios), pero este nivel de detalles adicionales no es necesario para verificar privilegios elevados.
Ejemplo
Enumere los privilegios de todos los cmd
procesos en ejecución :
> 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.
Aquí, podemos ver que hay tres cmd
procesos que comencé. Los dos primeros tienen un nivel medio obligatorio (integridad) y se muestran como ejecutados en mi cuenta de dominio, lo que indica que estos procesos se iniciaron sin privilegios de administrador.
Sin embargo, el último proceso (PID 6636) se inició con permisos elevados, por lo que mi comando no privilegiado no puede leer información sobre ese proceso. La ejecución con permisos elevados accesschk
y la especificación explícita de su PID imprime la siguiente información:
> 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
Ahora podemos ver que el nivel de integridad es alto y que este proceso se ejecuta bajo el Administrators
grupo de seguridad incorporado.