Go to content Go to navigation Go to search

Cómo obtener el SID de un usuario local? – C#

February 2nd, 2010 by JuanK

Obtener el SID del usuario que se encuentra ejecutando la aplicación es bastante sencillo:

  1. Adicionar using a System.Security.Principal
  2. Instanciar un objeto WindowsIdentity
  3. Construirlo a partir de WindowsIdentity.GetCurret()
  4. Usar la propiedad Value
using System;
using System.Security.Principal;
 
class Program
{
    static void Main(string[] args)
    {
        WindowsIdentity currentUser = WindowsIdentity.GetCurrent();
        Console.WriteLine(currentUser.User.Value);
        Console.ReadLine();
    }
}

Sin embargo tratar de acceder a la información de los usuarios diferentes del logueado actualmente ( y sin usar impersonación ) puede ser un poco más complejo. Una alternativa viable es hacer uso de WMI.

  1. Adicionar la referencia a System.Management y el respectivo using
  2. A traves de WMI se debe hacer un query al objeto Win32_UserAccount
  3. Especificar el nombre del dominio, si es local es el nombre de la máquina el cual se peude obtener a traves de System.Environment
  4. Hacer una búsqueda sobre el query
  5. Usar el indizador accediento con la cadena “SID”
using System;
using System.Management;
 
class Program
{
    static void Main(string[] args)
    {
       SelectQuery sQuery = new SelectQuery("Win32_UserAccount", "Domain='" 
                                      + System.Environment.MachineName + "'");
        ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(sQuery);
        
        Console.WriteLine("User Accounts");
        Console.WriteLine("");
        foreach (ManagementObject mObject in mSearcher.Get())
            Console.WriteLine(mObject["SID"]);
 
        Console.ReadLine();
    }
}

Happy Learning!

Bookmark and Share