Ich verwende System.DirectoryServices.AccountManagement.dll
, um mit Active Directory zu arbeiten
um alle Benutzer in die Gruppe "Domain Users" zu bekommen.
Dies gibt alle Benutzer in der Domäne zurück, aber ich muss nur die aktivierten abrufen.
Hier ist ein Beispielcode:
%Vor% Andere Gruppen funktionieren gut, aber wenn die Gruppe "Domänenbenutzer" ist, ist der Wert der Enabled
-Eigenschaft false
für alle Benutzer. Dies macht es unmöglich, zwischen aktivierten und deaktivierten Benutzern zu unterscheiden, ohne eine weitere Abfrage für jeden Benutzer durchzuführen.
UserPrinciple-Objekte haben dafür eine bool-Eigenschaft Enabled.
%Vor%Es gibt eine Anmerkung zur MSDN-Seite der Enabled-Eigenschaft sagen:
Wenn der Prinzipal nicht im Speicher beibehalten wurde, gibt diese Eigenschaft null zurück. Nachdem der Prinzipal beibehalten wurde, hängt die Standardeinstellung für die Einstellung vom Speicher ab. Die AD DS- und AD LDS-Speicher deaktivieren neue Principals, wenn sie beibehalten werden, während SAM neue Principals aktiviert, wenn sie beibehalten werden. Die Anwendung kann diese Eigenschaft nur auf einen Wert festlegen, nachdem sie im Speicher beibehalten wurde.
Vielleicht hängt es zusammen, wenn der Standardwert falsch ist?
Außerdem gibt es im MSDN-Forum einen Beitrag über UserPrincipal.Enabled gibt False für Accounts zurück, die tatsächlich aktiviert sind? und die sich wirklich ähnlich zu Ihrem Problem anhören. Laut der Post gibt es hier vielleicht eine Lösung:
%Vor%Ich glaube, ich habe es falsch verstanden. Ignoriere, was ich vorher gepostet habe. Ich denke, ich weiß, was passiert. Die GetMembers-Methode wird anscheinend nicht geladen die UserPrincipal-Daten. Ich weiß nicht, ob es eine bessere Lösung gibt, aber das folgende funktioniert (zumindest auf meinem AD):
Tags und Links c# active-directory account-management directoryservices