Si vous utilisez .NET 3.5 et versions ultérieures, vous devez consulter l'espace de noms System.DirectoryServices.AccountManagement
(S.DS.AM). À lire ici:
Fondamentalement, vous pouvez définir un contexte de domaine et de trouver facilement les utilisateurs et/ou groupes AD:
// 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
}
}
Le nouveau S.DS.AM, il est vraiment facile de jouer avec les utilisateurs et les groupes dans AD!
Le dernier point: les autorisations. Ceux-ci ne sont pas stockés dans Active Directory - et par conséquent, vous ne pouvez pas les récupérer à partir de n'importe quel code AD.
Les autorisations sont stockées sur les éléments de système de fichiers individuels, par ex. fichiers et/ou répertoires - ou d'autres objets (comme les clés de registre, etc.). Lorsque vous avez un compte AD ou un compte d'utilisateur, vous pouvez lire sa propriété SID (Security Identifier) - ce SID apparaîtra dans ACL (Access Control Lists) partout dans Windows - mais de l'utilisateur ou du groupe, il n'y a pas de mécanisme pour obtenir autorisations qu'il pourrait avoir n'importe où dans la machine/serveur.
Les autorisations pour les fichiers et les répertoires peuvent, par ex. être récupéré à l'aide de la méthode .GetAccessControl()
sur les FileInfo
et DirectoryInfo
cours:
FileInfo info = new FileInfo(@"D:\test.txt");
FileSecurity fs = info.GetAccessControl();
DirectoryInfo dir = new DirectoryInfo(@"D:\test\");
DirectorySecurity ds = dir.GetAccessControl();
Décrypter et donner un sens de ceux qui est une toute autre histoire tout à fait!
quelle langue ?? – TheGeekYouNeed
J'utilise des API Active Directory dans .NET/C#. – user802165