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:
- Adicionar using a System.Security.Principal
- Instanciar un objeto WindowsIdentity
- Construirlo a partir de WindowsIdentity.GetCurret()
- 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.
- Adicionar la referencia a System.Management y el respectivo using
- A traves de WMI se debe hacer un query al objeto Win32_UserAccount
- 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
- Hacer una búsqueda sobre el query
- 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!
- 6 Comentarios »
- Publicado en la categoría 'C#'

Wordpress
6 comentarios to “Cómo obtener el SID de un usuario local? – C# ”
October 17th, 2008 at 6:33 am
Juank, soy kp-sexsilvius de Laneros.com, me podrías pasar el password del texto guía de C# por favor?
Gracias.
Mi correo: wsilvius@gmail.com
Silvius
August 18th, 2009 at 2:32 pm
[...] Puedes ver el articulo original en mi blog: http://juank.black-byte.com/c-obtener-sid-usuario-local/ [...]
August 18th, 2009 at 2:35 pm
[...] http://juank.black-byte.com/c-obtener-sid-usuario-local/ [...]
August 18th, 2009 at 2:38 pm
[...] http://juank.black-byte.com/c-obtener-sid-usuario-local/ [...]
June 17th, 2010 at 4:45 pm
Hola amigos.
he probado el codigo y lo he modificado un poco
en ves de: Console.WriteLine(mObject["SID"]);
puse pues: Console.WriteLine(mObject.Path.RelativePath);
ya que deseo obtener el nombre y dominio de la sesion
esto me funciona para obtener a los usuarios locales,
pero es que necesito tambien las sesiones de un dominio nombrado JCCE
que tiene usuarios en mi Pc
June 17th, 2010 at 4:49 pm
Hola, si mal no recuerdo basta con cambiar System.Environment.MachineName por el nombre del dominio requerido. sobra decir que debes tener un nivel de privilegios dentro del dominio para poder realizar esta labor.