none
Obtener los usuarios administradores del equipo RRS feed

  • Pregunta

  •  

    Hola!!!

    Me gustaría saber la forma de obtener los usuarios que son administradores del equipo. Sé comprobar si el usuario que ejecuta la aplicación (usuario actualmente logado) es del grupo administradores, pero también me interesaría obtener los nombres de todos los demás usuarios administradores, si los hay.

    Muchísimas gracias de antemano!!!

    jueves, 13 de marzo de 2008 16:26

Respuestas

  • He conseguido sacar los administradores pero tienes que navegar un poco en las propiedades porque lo he logrado en una cadena de texto, hasta que lo encuentres pues me tengo ir en breve, te dejo el código para que investigues, recuerda poner el dominio donde buscas Wink:

     

    Code Snippet

    SelectQuery query = new SelectQuery("SELECT * FROM Win32_GroupUser WHERE GroupComponent = \"Win32_Group.Domain='HEKA',Name='Administrators'\"");

    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

    foreach (ManagementObject envVar in searcher.Get())

    {

    Console.WriteLine("Username : {0}", envVar["PartComponent"]);

    }

     

     

    Te saldrá algo así:

     

    "\\\\HEKA\\root\\cimv2:Win32_UserAccount.Domain=\"HEKA\",Name=\"Administrator\""

    "\\\\HEKA\\root\\cimv2:Win32_UserAccount.Domain=\"HEKA\",Name=\"luisr\""

     

    Si te das cuenta en el Name lo tienes pero hay que indagar en que propiedad te da el nombre para no andar buscando la cadena con expresiones regulares aunque a lo mejor es la solución Smile

     

    Si no das con ello cuando tenga un ratito este finde sigo dandole al tema, ok Wink

     

    Salu2

    viernes, 14 de marzo de 2008 12:23
  • Hola!!!

    Al final he conseguido la forma de obtener los usuarios de un determinado grupo, en este caso el de Administradores locales:

    Code Snippet

    private const string GROUP = "group";
    private const string WIN_NT = "WinNT://";
    private const string MEMBERS = "members";
           
    private void btnGetMembers_Click(object sender, EventArgs e)
    {
                DirectoryEntry localMachine = new DirectoryEntry( WIN_NT+
    Environment.MachineName);
                DirectoryEntry admGroup = localMachine.Children.Find("Administradores", GROUP);

                object members = admGroup.Invoke(MEMBERS, null);
                foreach (object groupMember in (IEnumerable)members)
                {
                    DirectoryEntry member = new DirectoryEntry(groupMember);
                    listBox1.Items.Add(member.Name);
                }
    }

     

     

     

    Salu2 y gracias!!!

     

    jueves, 27 de marzo de 2008 14:29

Todas las respuestas

  • Hola:

    Lo puedes hacer con WMI.NET:

    http://chakkaradeep.wordpress.com/2007/10/14/enumerating-users-using-wminet-and-c/

    Salu2
    jueves, 13 de marzo de 2008 16:47
  • Hola!!

    Gracias por tu respuesta. He estado mirando el enlace, pero me parece que se consultan cuentas con derechos de Administrador en un entorno Active Directory. Yo lo que quiero es consultar los usuarios que pertenecen al grupo "Administradores" local. ¿Hay alguna forma de hacerlo?

    Salu2!!!!

     

    jueves, 13 de marzo de 2008 17:16
  • Al final he conseguido obtener todos los usuarios de active directory. Ahora sólo necesito el trozo de consulta WMI que me diga los que son administradores locales.

    Code Snippet
    SelectQuery query = new SelectQuery("SELECT * FROM Win32_UserAccount");
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
                foreach (ManagementObject envVar in searcher.Get())
                {
                    Console.WriteLine("Username : {0}", envVar["Name"]);
                }

     

     

    Supongo que alguna consulta del estilo:

    Code Snippet
    "SELECT * FROM Win32_UserAccount WHERE Win32_Group=Administrador local"

     

     

    o algo así es lo que necesito.

    Gracias y saludos!!

     

    viernes, 14 de marzo de 2008 11:54
  • He conseguido sacar los administradores pero tienes que navegar un poco en las propiedades porque lo he logrado en una cadena de texto, hasta que lo encuentres pues me tengo ir en breve, te dejo el código para que investigues, recuerda poner el dominio donde buscas Wink:

     

    Code Snippet

    SelectQuery query = new SelectQuery("SELECT * FROM Win32_GroupUser WHERE GroupComponent = \"Win32_Group.Domain='HEKA',Name='Administrators'\"");

    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

    foreach (ManagementObject envVar in searcher.Get())

    {

    Console.WriteLine("Username : {0}", envVar["PartComponent"]);

    }

     

     

    Te saldrá algo así:

     

    "\\\\HEKA\\root\\cimv2:Win32_UserAccount.Domain=\"HEKA\",Name=\"Administrator\""

    "\\\\HEKA\\root\\cimv2:Win32_UserAccount.Domain=\"HEKA\",Name=\"luisr\""

     

    Si te das cuenta en el Name lo tienes pero hay que indagar en que propiedad te da el nombre para no andar buscando la cadena con expresiones regulares aunque a lo mejor es la solución Smile

     

    Si no das con ello cuando tenga un ratito este finde sigo dandole al tema, ok Wink

     

    Salu2

    viernes, 14 de marzo de 2008 12:23
  •  

    De acuerdo. Me pondré con ello y ya comunicaré novedades.

    Muchísimas gracias por tu ayuda!!! Wink

    viernes, 14 de marzo de 2008 15:35
  • Hola!!!

    Al final he conseguido la forma de obtener los usuarios de un determinado grupo, en este caso el de Administradores locales:

    Code Snippet

    private const string GROUP = "group";
    private const string WIN_NT = "WinNT://";
    private const string MEMBERS = "members";
           
    private void btnGetMembers_Click(object sender, EventArgs e)
    {
                DirectoryEntry localMachine = new DirectoryEntry( WIN_NT+
    Environment.MachineName);
                DirectoryEntry admGroup = localMachine.Children.Find("Administradores", GROUP);

                object members = admGroup.Invoke(MEMBERS, null);
                foreach (object groupMember in (IEnumerable)members)
                {
                    DirectoryEntry member = new DirectoryEntry(groupMember);
                    listBox1.Items.Add(member.Name);
                }
    }

     

     

     

    Salu2 y gracias!!!

     

    jueves, 27 de marzo de 2008 14:29