ADUser auslesen: Fehlende Eigenschaften ausschließen

    ADUser auslesen: Fehlende Eigenschaften ausschließen

    Tach zusammen,
    ich brech' mir gerade den Finger im ... Ohr ab.

    Ich möchte die Eigenschaften eines Users aus dem AD lesen.
    So weit, so gut.
    Es gibt aber Eigenschaften, die nicht bei jedem User vorhanden sind, wie z.B. die Mobilnummer.

    Wie kann ich sauber herausfinden, ob eine bestimmte Eigenschaft überhaupt vorhanden ist?
    Ich möchte KEINE Exceptions beim Zugriff ("Die Verzeichniseigenschaft wurde nicht im Cache gefunden")!
    Der Code soll schließlich nicht nur zur Laufzeit, sondern auch im Debugger ohne jegliche Exception laufen.

    Delphi-Code

    1. ​var
    2. ADSystemInfo: IADsADSystemInfo;
    3. ADSUser: IADsUser;
    4. ADQueryString: WideString;
    5. begin
    6. ADSystemInfo := CoADSystemInfo.Create;
    7. try
    8. ADQueryString := 'LDAP://' + ADSystemInfo.UserName;
    9. OleCheck(ADsGetObject(PWideChar(ADQueryString), IADsUser, ADSUser));
    10. begin
    11. ShowMessage(ADSUser.TelephoneNumber);
    12. ShowMessage(ADSUser.TelephoneMobile);
    13. end;
    14. finally
    15. ADSystemInfo := nil;
    16. end;
    17. end;
    "After three days without programming, life becomes meaningless." (The Tao of Programming, Book 2)
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler, 'Refactoring')
    Hmmmm, ich bin mir sicher das schon mal probiert und aus Performancegründen verworfen zu haben.
    Beim lesen von 10 Werten aus dem AD sind das 10 eigene Aufrufe, die ihre Zeit brauchen.
    Mir persönlich sind das 10 zu viel.

    Ich probier das aber gerne nochmal aus und berichte hier über die Laufzeiten.
    "After three days without programming, life becomes meaningless." (The Tao of Programming, Book 2)
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler, 'Refactoring')