Principales respuestas
Obtener los usuarios administradores del equipo

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!!!
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
:
Code SnippetSelectQuery
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
Si no das con ello cuando tenga un ratito este finde sigo dandole al tema, ok
Salu2
-
Hola!!!
Al final he conseguido la forma de obtener los usuarios de un determinado grupo, en este caso el de Administradores locales:
Code Snippetprivate 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!!!
Todas las respuestas
-
-
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!!!!
-
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 SnippetSelectQuery 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"Gracias y saludos!!
-
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
:
Code SnippetSelectQuery
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
Si no das con ello cuando tenga un ratito este finde sigo dandole al tema, ok
Salu2
-
-
Hola!!!
Al final he conseguido la forma de obtener los usuarios de un determinado grupo, en este caso el de Administradores locales:
Code Snippetprivate 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!!!