Entwickler-Ecke
Basistechnologien - Anfängerfrage bzgl. AD Abfragen
sunghost - Fr 30.07.10 08:39
Titel: Anfängerfrage bzgl. AD Abfragen
Hallo,
ich bin absoluter Neuling im C# Bereich. Ich habe mich schon ein wenig eingelesen und versuche nun ein paar Infos aus dem Active Directory zu ziehen. Dafür möchte ich .Net3.5 und den Namespace DirectoryServices und .AccountManagement verwenden. Ich habe ein Codesnipe im Netz gefunden der soweit auch funktioniert, allerdings bekomme ich ihn nicht auf meine Ansprüche umgebogen. Dies liegt vermutlich an meinen fehlenden Kenntnissen in der objektorientierten Programmierung. Daher brauche ich eure erklärende Hilfe. Thx.
Verbindung mit dem AD herstellen:
C#-Quelltext
1:
| PrincipalContext currentDomain = new PrincipalContext(ContextType.Domain); |
binden der User Pricipals
C#-Quelltext
1:
| UserPrincipal userQuery = new UserPrincipal(currentDomain); |
und nun möchte ich ganz einfach die Eigenschaften des Users auslesen. Dazu kann man die Eigenschaft DisplayName verwenden. Ich weiß allerdings nicht wie ich da ansetzen muss. Mit der MSDN komme ich irgendwie noch nicht so klar. Dort steht zwar was wofür ist, aber kein wirkliches Bsp.
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Th69 - Fr 30.07.10 10:58
Du meinst nicht einfach
C#-Quelltext
1:
| string displayName = userQuery.DisplayName; |
:?!?:
Der Zugriff auf Eigenschaften (Properties) bzw. Felder und Methoden sollte eigentlich eines der ersten Dinge sein, was man in einer objektorientierten Sprache wie C# lernt -)
Trashkid2000 - Fr 30.07.10 11:01
Hallo sunghost,
| Zitat: |
und nun möchte ich ganz einfach die Eigenschaften des Users auslesen
|
Hmm, welche Eigenschaften und von welchem User denn? Von dem Benutzer, unter dessen Context die Anwendung läuft? So richtig ist nicht ersichtlich, was das Ganze dann mal werden soll.
Wäre hilfreich, wenn Du mal ein bisschen weiter ausholst.
MFG, Marko
sunghost - Fr 30.07.10 13:37
Hi,
so wie du es geschrieben hattest, habe ich es auch probiert. Ich vermute mal, dass ich den abzufragenden User noch angeben muss, aber nicht weis wie. Irgendwie verstehe ich nicht wie man MSDN ließt, also welche Befehle für welchen Zweck benötigt werden und welche Parameter ich angeben muss. In diesem, für mich, Verständnistest, geht es nur um das Auslesen von Eigenschaften aus dem AD. Egal ob von Benutzern oder z.b Druckern. Das Beispiel das ich gefunden hatte:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| PrincipalContext currentDomain = new PrincipalContext(ContextType.Domain); UserPrincipal userQuery = new UserPrincipal(currentDomain); userQuery.PasswordNeverExpires = true; PrincipalSearcher searchForUser = new PrincipalSearcher(userQuery); foreach (UserPrincipal foundUser in searchForUser.FindAll()) { Console.WriteLine("DistinguishedName: " + foundUser.DistinguishedName); DirectoryEntry foundUserDE = (DirectoryEntry)foundUser.GetUnderlyingObject(); Console.WriteLine("Country Code: " + foundUserDE.Properties["countryCode"].Value); Console.Read(); } |
dies funktioniert soweit auch. allerdings verstehe ich die Bindung mit dem Principal nicht recht und versteh grad nicht wie ich das dann umsetzen kann.
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Th69 - Fr 30.07.10 14:29
Wenn du nur vom aktuellen User die Daten abfragen willst, dann kannst du die statische Eigenschaft 'Current' verwenden:
C#-Quelltext
1:
| UserPrincipal user = UserPrincipal.Current; |
Ansonsten benötigst du eine bestimmte Eigenschaft des Users (z.B. SID, UserPrincipalName, SAMAccountName, o.ä.) und kannst dann in der von dir geposteten Schleife eine entsprechende if-Abfrage einbauen, z.B.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| foreach (UserPrincipal foundUser in searchForUser.FindAll()) { if(foundUser.SID == userSID) { } } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!