// Convierte una cadena SID en un nombre de usuario/grupo.
cadena ConvertSidToString (cadena sid) {
intentar {
dominio var =nuevo StringBuilder(256);
var nombre de usuario =nuevo StringBuilder(256);
var sidParsed =falso;
resultado var =Win32Native.LookupAccountSid (nulo, sid, nombre de usuario, nombre de usuario.Capacidad);
if (resultado &&nombre de usuario.Longitud> 0) {
sidParsed =verdadero;
}
demás {
resultado =Win32Native.LookupAccountSid (nulo, sid, dominio, dominio.Capacidad, nombre de usuario, nombre de usuario.Capacidad);
if (resultado &&nombre de usuario.Longitud> 0 &&dominio.Longitud> 0) {
sidParsed =verdadero;
nombre de usuario.Append('\\').Append(dominio);
}
}
si (sidParsed) {
devolver nombre de usuario.ToString();
}
demás {
devolver nulo;
}
}
atrapar {
devolver nulo;
}
}
// Convierte un nombre de usuario/grupo en una cadena SID.
cadena ConvertStringToSid (nombre de cadena) {
intentar {
// Asigna un búfer para recibir el SID. La longitud máxima es:256 bytes para el SID
// sí mismo, más 1 byte para el carácter nulo.
var sid =nuevo byte[257];
// Asigna buffers para recibir los nombres de usuario y dominio. La longitud máxima es:
// Usuario:20 caracteres
// Dominio:80 caracteres
var usuario =nuevo StringBuilder(20);
dominio var =nuevo StringBuilder(80);
// Establece el dominio y el puntero SID en nulo para usar la computadora actual.
tamaño único =257;
var tuvo éxito =Win32Native.LookupAccountName (nulo, nombre, sid, tamaño de referencia, usuario, usuario.Capacidad, dominio, dominio.Capacidad);
si (tuvo éxito) {
// Convierte el SID en una cadena para mostrarlo.
devolver nuevo System.Security.Principal.SecurityIdentifier(sid, 0).Value;
}
demás {
devolver nulo;
}
}
atrapar {
devolver nulo;
}
}
```