2009-12-07 8 views
0

Je souhaite renvoyer une liste d'appartenances à un groupe pour un utilisateur de domaine spécifique. Quelque chose comme ...Obtenir des groupes de domaines pour un utilisateur spécifique et des autorisations pour un fichier spécifié en utilisant .Net

string[] UserGroups(string domain, string domainUserName) 
{ 
    // query domain info 

    // return a list of accounts the user is a member of 
} 

En outre, je veux être en mesure de voir quels comptes de domaine/groupes ont accès à un fichier/dossier spécifié.

string[] AllowedAccounts(string domain, string filePath) 
{ 
    // query file/folder permission 

    // return a list of accounts with access to file/folder 
} 

Quelle est la meilleure façon d'effectuer ces deux tâches en utilisant C#?

Répondre

1

Voici un exemple. Vous n'avez pas besoin du domaine pour votre fonction d'accès au fichier, sauf si vous souhaitez filtrer.

string[] UserGroups(string domain, string domainUserName) 
{ 

    WindowsIdentity ident = new WindowsIdentity(domainUserName + "@" + domain); 
    List<string> groups = new List<string>(); 
    foreach (IdentityReference g in ident.Groups) 
    {    
     groups.Add(g.Value); 
    } 
    return groups.ToArray(); 
} 

string[] AllowedAccounts(string filePath) 
{ 
    List<string> accounts = new List<string>(); 
    FileInfo fInfo = new FileInfo(filePath); 
    var fsec = fInfo.GetAccessControl(); 
    AuthorizationRuleCollection acl = fsec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)); 
    foreach (FileSystemAccessRule ace in acl) 
    { 
     accounts.Add(ace.IdentityReference.Value); 
    } 
    return accounts.ToArray(); 
} 
Questions connexes