PropertyPage-Extension für MMC "Active Directory Benutzer und Computer" in C#

Ausgangspunkt dieses Artikels war ein Gespräch vor ein paar Tagen: “Wäre schön, wenn wir jedem unserer Mitarbeiter eine Mitarbeiter-Nummer im ActiveDirectory vergeben könnten.”
Ich googelte im Internet und fand diesen Artikel auf InformIT.
Er erklärt recht gut, wie man die Mitarbeiter-Nummer in das passende MMC “Active Directory Benutzer und Computer” einbindet.

Allerdings war ich von der Darstellung nicht sonderlich begeistert: Ich wollte in den Eigenschaften der Mitarbeiter ein eigenes Tab haben. Zuerst suchte ich bei Microsoft und fand einige Dokumente auf den MSDN-Seiten. Allerdings hatte ich kein Nerv auf C++ und entschied mich, MMC 3.0 und .NET bzw. C# zu verwenden.

Mit der Installation des .NET Frameworks 3.5 sollte das MMC-Assembly mitinstalliert werden. Danach suchte ich mir im Internet ein paar Code-Schnippsel zusammen:
Auf einer französische Seite fand ich den Code zum rudimentären Erzeugen einer PropertyPage. Für die Benutzung des Codes muss das MMC-Assembly von C:WINDOWSsystem32microsoft.managementconsole.dll eingebunden werden.
Mir stellte sich nun die Frage: Wie komme ich an den ausgewählten Benutzer heran?
Die Newsgroup microsoft.public.management.mmc war hilfreich. Ich hatte nun den LDAP-DN des ausgewählten Benutzers. Der Rest war trivial: Mit System.DirectoryServices stellte ich eine Verbindung zum Active Directory her und zog mir die Daten des Benutzers:

DirectoryEntry oUser = new DirectoryEntry(_searchDSN);
String employeeNumber = oUser.Properties["employeeNumber"].Value.ToString();

und konnte mit oUser.CommitChanges() meine Änderungen zurück ins AD schreiben.

Mit Hilfe des Tools InstallUtil lässt sich das erstellte Assembly in der Registry verankern und benutzen.

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>