Wenn Sie auf .NET 3.5 oder neuer sind, sollten Sie den PrincipalSearcher
und einen "query-by-example" Prinzipal für Ihre Suche auschecken:
Wenn Sie dies noch nicht getan haben - lesen Sie unbedingt den MSDN-Artikel Verwalten von Verzeichnissicherheitsprinzipalen in .NET Framework 3.5 , die zeigt, wie man die neuen Funktionen in System.DirectoryServices.AccountManagement
Aktualisierung:
Natürlich können Sie je nach Bedarf andere Eigenschaften für den von Ihnen erstellten Benutzer-Prinzipal "query-by-example" angeben:
Surname
(oder Nachname) DisplayName
(normalerweise: Vorname + Leerzeichen + Nachname) SAM Account Name
- Ihr Windows / AD-Kontoname User Principal Name
- Ihr "[email protected]" -Stilname Sie können eine der Eigenschaften für UserPrincipal
angeben und diese als "query-by-example" für Ihre PrincipalSearcher
verwenden.
Update # 2: Wenn Sie nur innerhalb einer bestimmten Organisationseinheit suchen möchten, können Sie diese Organisationseinheit im Konstruktor von PrincipalContext
definieren.
Sie müssen die Eigenschaft DirectorySearcher.PageSize festlegen in der Lage, alle Ergebnisse zurückzugeben. Zum Beispiel:
%Vor%Andernfalls wird die Anzahl der zurückgegebenen Elemente durch das Limit auf der Serverseite begrenzt, das standardmäßig 1000 ist. Es gibt auch etwas namens SizeLimit, das Sie festlegen können, wenn Sie die Anzahl der zurückgegebenen Elemente explizit begrenzen möchten. Wenn sowohl SizeLimit als auch PageSize 0 sind (Standardwerte), wird das serverseitige Standard-SizeLimit verwendet. Ein bisschen kontraintuitiv meiner Meinung nach.
Wenn Sie alle die Ergebnisse zurückgeben möchten, können Sie PageSize nur auf einen Wert ungleich null und SizeLimit auf 0 setzen.
Tags und Links c# active-directory directoryservices