Si tiene .NET 3.5 y superior, debe verificar el espacio de nombres System.DirectoryServices.AccountManagement
(S.DS.AM). Leer todos los detalles aquí:
Básicamente, se puede definir un contexto de dominio y encontrar fácilmente los usuarios y/o grupos en el año:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// do something here....
}
// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere");
// if found....
if (group != null)
{
// iterate over members
foreach (Principal p in group.GetMembers())
{
Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName);
// do whatever you need to do to those members
}
}
El ¡El nuevo S.DS.AM hace que sea muy fácil jugar con usuarios y grupos en AD!
El último punto: permisos. Esos no están almacenados en Active Directory, y por lo tanto, no puede recuperarlos de ningún código AD.
Los permisos se almacenan en los elementos individuales del sistema de archivos, p. archivos y/o directorios u otros objetos (como claves de registro, etc.). Cuando tiene un grupo AD o una cuenta de usuario, puede leer su propiedad SID (identificador de seguridad): ese SID aparecerá en las listas de control de acceso de ACL en todo Windows, pero del usuario o grupo no existe un mecanismo para obtener todo permisos que podría tener en cualquier lugar de la máquina/servidor.
Los permisos para archivos y directorios pueden p. Ej. ser recuperados utilizando el método .GetAccessControl()
en las clases FileInfo
y DirectoryInfo
:
FileInfo info = new FileInfo(@"D:\test.txt");
FileSecurity fs = info.GetAccessControl();
DirectoryInfo dir = new DirectoryInfo(@"D:\test\");
DirectorySecurity ds = dir.GetAccessControl();
de desciframiento y dar sentido a los que es una historia completamente diferente por completo!
¿qué idioma? – TheGeekYouNeed
Estoy usando las API de Active Directory en .NET/C#. – user802165