Pregunta

Puedo usar este código para obtener el GUID y SID del usuario registrado actualmente:

UserPrincipal user = System.DirectoryServices.AccountManagement.UserPrincipal.Current;
Console.WriteLine("{0}, {1}", user.Guid, user.Sid);

Sin embargo, si el usuario inicia sesión sin estar conectado a la red, ese código falla ("el servidor no se puede contactar").Puedo obtener el SID de ese usuario, incluso si no están conectados, así:

WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
Console.WriteLine("{0}", identity.User.Value);

Pero el objeto de Windowsidentity no contiene un GUID, por lo que puedo decir.

¿Cómo puedo obtener el GUID del usuario actual, si no están conectados a la red?

Nota: Esta es una aplicación de escritorio, no una aplicación web.

¿Fue útil?

Solución

El identificador de seguridad (SID) es parte de cada token de proceso, es el identificador de usuario real.Cuando esté en grupo de trabajo, se almacena en el SAM (parte del registro) de cada computadora, cuando está en dominio, se almacena como un atributo de un objeto de usuario en Active-Directory.

El GUID también es un atributo de un objeto de usuario en el directorio activo, pero es el propósito principal para asegurar la unicidad de este objeto.

En la medida en que entiendo, el GUID no es parte de la seguridad de Windows, por lo que no soy sorprendido, no está disponible en modo desconectado.

Otros consejos

El SID se almacena en el token de seguridad del usuario, por lo que puede acceder a ella sin conexión.El GUID se conserva durante un movimiento intra-forestal (por lo tanto, entre los dominios dentro del mismo bosque), por lo que lo usa como su clave es una buena idea.Dado que nunca cambia, ¿por qué no persistes el GUID del usuario del registro la primera vez que inicia la aplicación?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top