Estoy tratando de obtener una lista de los usuarios reales en la máquina local. De verdad me refiero a los usuarios que pueden iniciar sesión físicamente en el sistema y usarlo, excluyendo cuentas solo remotas y similares.Lista de usuarios "reales" de Windows que utilizan la API de Win32
Esto es lo que ya hago.
llamada
NetUserEnum()
conFILTER_NORMAL_ACCOUNT
.me sale el siguiente: los usuarios
- __ __ vmware_user
- administrador
- Auxiliar de Ayuda a
- ASPNET
- de visitantes
- SUPPORT_xxxxxx
Tenga en cuenta que estos son los mismos usuarios que recibo cuando llamo al usuario de red desde la línea de comandos, , pero en el diálogo de inicio de sesión solo puedo seleccionar Administrador. Esto es lo que quiero.
De la lista de devolución en
NetUserEnum()
, puedo decir qué cuentas están deshabilitadas. Eso deja:- __ __ vmware_user
- administrador
- ASPNET
- SUPPORT_xxxxxx
Luego ejecutar
LsaEnumerateAccountRights()
para comprobar qué cuentas tienen la SeInteractiveLogonRight.Todos ellos lo tienen. Excepto el real, Administrador. Algunos de ellos tienen SeDenyInteractiveLogonRight. Eso me deja con:
- __ vmware_user __
- administrador (sin SeInteractiveLogonRight)
He encontrado un lugar que tal vez debería ser la comprobación de permisos de grupo en primer lugar, como mi cuenta de usuario podría heredará SeInteractiveLogonRight. Hasta el momento, no he encontrado una manera de enumerar los grupos para una cuenta determinada (SID o nombre). Intenté con NetUserGetGroups()
pero resulta que este solo devuelve grupos de dominio (en mi caso, "Ninguno").
Ahora mismo no sé qué más probar. Parece que todo será más fácil si tengo un 'Token de acceso', pero parece que no hay forma de conseguirlo para un usuario que no sea el usuario actualmente conectado. Hay como 20 API diferentes relacionadas con la autenticación y esto es una locura.
Agradezco su ayuda
¡Gracias, eso lo hizo! Me perdí totalmente esta función NetUserGetLocalGroups(). – bts
Para el registro, mi solución final al problema es incluir los grupos de usuarios con esta función, y luego mantener a los usuarios pertenecientes al grupo de Usuarios o Administradores. Estaba revisando los permisos para usuarios/grupos con inicio de sesión local deshabilitado, pero resultó que Windows incluye estos usuarios en la lista de inicio de sesión (aunque no puede iniciar sesión realmente, ya que están deshabilitados). – bts