Sie sind hier: Startseite
 Liste aller Codebeispiele

Informationen zu einem Benutzer ausgeben

Ein Beispiel zum Einsatz der Klasse System.DirectoryServices.DirectoryEntry aus der .NET-Klassenbibliothek.

Autor: Dr. Holger Schwichtenberg 

Beschreibung

Ein Benutzer-Objekt im Active Directory (AD-Klasse "user") besitzt zahlreiche Verzeichnisattribute. Ein Pflichtattribut, das alle Benutzer-Objekte besitzen, ist "SAMAccountName", das den NT4-kompatiblen Anmeldenamen enthält.
Die folgende Tabelle zeigt weitere Verzeichnisattribute eines Benutzer-Objekts im Active Directory.
Name Pflicht Mehrwertig Datentyp (Stringlänge)
"cn" Ja Nein DirectoryString (1-64)
"nTSecurityDescriptor" Ja Nein ObjectSecurityDescriptor (0-132096)
"objectCategory" Ja Nein DN
"objectClass" Ja Ja OID
"ObjectSid" Ja Nein OctetString (0-28)
"SAMAccountName" Ja Nein DirectoryString (0-256)
"accountExpires" Nein Nein INTEGER8
"accountNameHistory" Nein Ja DirectoryString
"badPwdCount" Nein Nein INTEGER
"comment" Nein Nein DirectoryString
"company" Nein Nein DirectoryString (1-64)
"createTimeStamp" Nein Nein GeneralizedTime
"department" Nein Nein DirectoryString (1-64)
"description" Nein Ja DirectoryString (0-1024)
"desktopProfile" Nein Nein DirectoryString
"displayName" Nein Nein DirectoryString (0-256)
"displayNamePrintable" Nein Nein PrintableString (1-256)
"DistinguishedName" Nein Nein DN
"division" Nein Nein DirectoryString (0-256)
"employeeID" Nein Nein DirectoryString (0-16)
"EmployeeType" Nein Nein DirectoryString (1-256)
"expirationTime" Nein Nein UTCTime
"FacsimileTelephoneNumber" Nein Nein DirectoryString (1-64)
"givenName" Nein Nein DirectoryString (1-64)
"homeDirectory" Nein Nein DirectoryString
"HomeDrive" Nein Nein DirectoryString
"homeMDB" Nein Nein DN
"Initials" Nein Nein DirectoryString (1-6)
"internationalISDNNumber" Nein Ja NumericString (1-16)
"l" Nein Nein DirectoryString (1-128)
"lastLogoff" Nein Nein INTEGER8
"LastLogon" Nein Nein INTEGER8
"logonCount" Nein Nein INTEGER
"LogonHours" Nein Nein OctetString
"logonWorkstation" Nein Nein OctetString
"manager" Nein Nein DN
"middleName" Nein Nein DirectoryString (0-64)
"Mobile" Nein Nein DirectoryString (1-64)
"name" Nein Nein DirectoryString (1-255)
"objectGUID" Nein Nein OctetString (16-16)
"ObjectVersion" Nein Nein INTEGER
"otherFacsimileTelephoneNumber" Nein Ja DirectoryString (1-64)
"OtherHomePhone" Nein Ja DirectoryString (1-64)
"physicalDeliveryOfficeName" Nein Nein DirectoryString (1-128)
"PostalAddress" Nein Ja DirectoryString (1-4096)
"postalCode" Nein Nein DirectoryString (1-40)
"PostOfficeBox" Nein Ja DirectoryString (1-40)
"profilePath" Nein Nein DirectoryString
"SAMAccountType" Nein Nein INTEGER
"scriptPath" Nein Nein DirectoryString
"street" Nein Nein DirectoryString (1-1024)
"streetAddress" Nein Nein DirectoryString (1-1024)
"TelephoneNumber" Nein Nein DirectoryString (1-64)
"title" Nein Nein DirectoryString (1-64)
"userWorkstations" Nein Nein DirectoryString (0-1024)
"whenChanged" Nein Nein GeneralizedTime
"whenCreated" Nein Nein GeneralizedTime
"wWWHomePage" Nein Nein DirectoryString (1-2048)

Beispiel
Die folgende Routine listet Informationen zu einem durch einen übergebenen LDAP-Pfad spezifizierten Benutzer-Objekt auf. Nach der Bindung des DirectoryEntry-Objekts an das Verzeichnisobjekt wird zunächst geprüft, ob das verwendete Objekt zur AD-Klasse "user" gehört. Nach der Ausgabe der Basisdaten werden vier benutzerspezifische Attribute (Anmeldename, Beschreibung, Telefonnummer, Stadt) ausgegeben.

Programmcodebeispiele Visual Basic .NET (VB.NET)

' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Informationen zu einem Benutzer ausgeben
' (C) Holger@Schwichtenberg.de
' ============================
Sub ADSBenutzerLesen(ByVal pfad As String)

Dim o As DirectoryEntry

out("# Informationen über den Benutzer: " & pfad)

' --- Zugriff auf Eintrag
o = New DirectoryEntry(pfad)
If o.SchemaClassName <> "user" Then Exit Sub

' --- Basisdaten des Eintrags
out("Name: " & o.Name)
out("Pfad: " & o.Path)
out("Klasse:" & o.SchemaClassName)
out("GUID: " & o.Guid.ToString)
out("Native GUID:" & o.NativeGuid)

' --- Ausgabe der Verzeichnisattribute
out("NT4-Anmeldename: " & _
o.Properties("SAMAccountName")(0))
out("Beschreibung: " & getAtt(o, "Description"))
out("Telefonnummer: " & getAtt(o, "telephoneNumber"))

out("Stadt: " & getAtt(o, "l"))

End Sub

Programmcodebeispiele CSharp (C#)

using System;
using System.DirectoryServices;
using ActiveDs;

namespace FCLBuch._SystemDirectoryServices {

public class Samples_ADSI {
public void ADSBenutzerLesen(string pfad) {

// Informationen zu einem Benutzer ausgeben
FclOutput.PrintOut("# Informationen über den Benutzer: " + pfad);

// Zugriff auf Eintrag
DirectoryEntry o = new DirectoryEntry(pfad);
if (o.SchemaClassName != "user")
return;

// Basis-Daten des Eintrags
FclOutput.PrintOut("Name: " + o.Name);
FclOutput.PrintOut("Pfad: " + o.Path);
FclOutput.PrintOut("Klasse:" + o.SchemaClassName);
FclOutput.PrintOut("GUID: " + o.Guid.ToString());
FclOutput.PrintOut("Native GUID:" + o.NativeGuid);

// Ausgabe der Verzeichnisattribute
FclOutput.PrintOut("NT4-Anmeldename: " + o.Properties["samAccountName"][0]);
FclOutput.PrintOut("Beschreibung: " + ADSI_HelperMethods.GetAtt(o, "Description"));
FclOutput.PrintOut("Telefonnummer: " + ADSI_HelperMethods.GetAtt(o, "telephoneNumber"));

FclOutput.PrintOut("Stadt: " + ADSI_HelperMethods.GetAtt(o, "l"));
}
}
}

Querverweise

 Definition '.NET Framework Class Library'  Verfügbarkeit der Klasse 'System.DirectoryServices.DirectoryEntry'  Übersicht über den FCL-Namensraum 'System.DirectoryServices'  .NET & Visual Studio Community Portal