2010-07-20 5 views
4

J'ai effectué une programmation pour lire les données d'Active Directory, telles que le compte d'utilisateur ou les informations d'organisation, etc. Le code ci-dessous est comme quelque chose que j'ai fait.Comment puis-je lire le schéma Active Directory par programme?

DirectoryEntry entry = new DirectoryEntry(
    "LDAP://CN=Users,DC=domain,DC=com", 
    null, 
    null, 
    AuthenticationTypes.Secure 
    ); 

DirectorySearcher search = new DirectorySearcher(entry); 

using (SearchResultCollection src = search.FindAll()) 
{ 
    foreach (SearchResult result in src) 
    { 
     Console.WriteLine(result.Properties["name"][0] + " : " + 
          result.Properties["department"][0]); 
    } 
} 

Le problème est de savoir comment puis-je savoir quelles sont les propriétés qui ciblent les objets ont alors je peux les utiliser pour filtrer les données avant tout obtenir.

Des idées?

Répondre

7

Si vous avez un DirectoryEntry, vous pouvez consulter son .SchemaEntry:

DirectoryEntry entry = new DirectoryEntry("LDAP://......"); 

DirectoryEntry schema = deMyself.SchemaEntry; 

Cela devrait - si vous disposez des autorisations nécessaires - vous donner accès aux propriétés définies dans le schéma - des choses comme MandatoryProperties ou OptionalProperties:

foreach (var prop in schema.Properties.PropertyNames) 
{ 
    string propName = prop.ToString(); 
    var propValue = schema.Properties[propName].Value; 
} 

Est-ce que cela vous aide à démarrer?

Vous pouvez également jeter un oeil à BeaverTail - mon navigateur LDAP open source C#.

alt text http://adsi.mvps.org/adsi/CSharp/beavertail1.png

Il vous permettra d'inspecter un nœud LDAP et voir toutes ses propriétés.

+1

Votre réponse et le navigateur LDAP sont excellents. –