tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
535
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    StehtimSchilf StehtimSchilf ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    117
    Hi Forum

    ich habe mein AD mit einem ldif-file erweitert:
    - Ich habe eine neue Schema Class 'mySchemaClass' hinzugefügt
    - Und für die Schema Class vier neue Attribute Attr1, Attr2, Attr3, Attr4 hinzugefügt.

    Alles funktioniert wunderbar.

    Wenn ich nun mit ADSIEdit.exe meine Schema Class anschaue, dann sehe ich dort das Attribute: "mayContain". welches die Werte Attr1, Attr2, Attr3, Attr4 enthält.

    Alles wie gewünscht.

    Aber wie zum Henker komme ich mit C# an dieses Attribut "mayContain" ran?

    Das Attribute gibt es nicht als Eigenschaft von ActiveDirectorySchema noch ist es in den Eigenschaften OptionalProperties, MandatoryProperties gelistet.


    Ich komme ran, wenn ich einen DirectorySearcher wie folgt ausführe:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
             DirectoryEntry dir = new DirectoryEntry("LDAP://1.2.3.4/cn=schema,CN=Configuration,DC=example,DC=com");
             DirectorySearcher searcher = new DirectorySearcher(dir);
             searcher.Filter = "(cn=mySchemaClass)";
             SearchResult searchResult = searcher.FindOne();
             ResultPropertyCollection prop = searchResult.Properties;
     
             foreach (string propName in prop.PropertyNames) {
                if (propName.Equals("maycontain", StringComparison.InvariantCultureIgnoreCase)) {
                   log.Text += "\r\n" + propName + ": ";
                   foreach (string value in prop[propName]) {
                      log.Text += "\r\n" + value+ ": ";
                   }
                }
             }

    Aber das kann doch nicht sein, dass ich das so mühsam machen muss? Ich meine, an die Schema Class komme ich ja ganz einfach mit:

    Code :
    1
    
    ActiveDirectorySchemaClass.FindByName(getContext(), "mySchemaClass");


    Ideen?
    Cheerioh
    SiS
     

  2. #2
    Avatar von Muepe32
    Muepe32 Muepe32 ist offline Mitglied Brokat
    Registriert seit
    Mar 2011
    Beiträge
    354
    Na ja, mühsam kann man das nicht wirklich nennen, aber das ist sicher kürzer:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    
                System.DirectoryServices.ResultPropertyCollection res = searchResult.Properties;
                var props = res["mayContain"]; // möglicherweise ist ein res.Contains("mayContain") besser, ich weiss nicht, was operator this macht, wenn der Schlüssel nicht drin ist. Da in der Doku nichts von einer Exception steht vermute ich, dass eine leere Collection zurückgegeben wird.
                if (props.Count == 0)
                    throw new Exception("mayContain is not contained!");
     
                foreach (string s in props)
                    Console.WriteLine(s);
     
    Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
    Win32Easy - Blog
    Es würde mich freuen, wenn ihr einen Kommentar postet!

Ähnliche Themen

  1. Active Directory auslesen?
    Von danyh im Forum PHP
    Antworten: 1
    Letzter Beitrag: 22.03.10, 15:20
  2. Active Directory auslesen / LDAP
    Von jma im Forum .NET Datenverwaltung
    Antworten: 2
    Letzter Beitrag: 06.07.06, 13:07
  3. Active Directory MMC Snap-In für Schema Manipulation aktivieren
    Von Thomas Darimont im Forum Microsoft Windows
    Antworten: 0
    Letzter Beitrag: 25.09.05, 01:36
  4. Antworten: 0
    Letzter Beitrag: 20.05.05, 09:50
  5. Active Directory auslesen
    Von michaelwengert im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 15.07.04, 12:10

Stichworte