Laden...

Active Directory - Passwort ändern

Erstellt von Theki vor 14 Jahren Letzter Beitrag vor 14 Jahren 4.562 Views
T
Theki Themenstarter:in
55 Beiträge seit 2009
vor 14 Jahren
Active Directory - Passwort ändern

Hey zusammen,

seit einigen Tagen sitzt ich nun über dem Problem, dass ich gerne auf unserem Server von meinem Rechner Benutzer-Passwörter ändern möchte.

Nehmen wir follgendes an:

-Servername: server01
-Serverdomain: serverhome.de

-Auf dem Server Administrator Konto: Administrator
-Passendes Passwort: Test

Von follgendem Benutzer sollen die Daten geändert werden: MaxMustermann

Nun habe ich mir follgendes Code zusammen gesucht:


string neuPW = "123";
 DirectoryEntry uEntry = new DirectoryEntry("LDAP://server01/cn=MaxMustermann,ou=jugendliche,ou=benutzer,dc=serverhome,dc=de", "Administrator@serverhome.de", "Test", AuthenticationTypes.None);

                uEntry.Options.PasswordPort = 389;
                uEntry.Options.PasswordEncoding = PasswordEncodingMethod.PasswordEncodingClear;

                uEntry.Invoke("SetPassword", new object[] { neuPW});
                uEntry.Properties["LockOutTime"].Value = 0; //unlock account

                uEntry.Close();

Dabei bekomm ich den Fehler, dass der Server nicht funktionstüchtig sei.

Für mich ist das Neuland. Was muss ich anders machen?

Vielen Dank im voraus

Theki

T
253 Beiträge seit 2006
vor 14 Jahren

Hallo Theki,

wenn es kein eigenes Programm sein muss, kannst du doch mit dem Active Directory-Benutzer und -Computer MMC-Snap-In arbeiten. Ansonsten hat Google eine Menge ausgespuckt. Unteranderem das hier:

http://www.codeproject.com/KB/system/everythingInAD.aspx

Mfg

T
Theki Themenstarter:in
55 Beiträge seit 2009
vor 14 Jahren

In einem Programm integiert wäre super, deswegen ja meine Frage.
Vom Codeprojekt hatte ich zumteil auch den Code, zumindest den letzten Teil.

Ich denke dass der Fehler eher hier liegt:


DirectoryEntry uEntry = new DirectoryEntry("LDAP://server01/cn=MaxMustermann,ou=jugendliche,ou=benutzer,dc=serverhome,dc=de", "Administrator@serverhome.de", "Test", AuthenticationTypes.None);

Und hoffe, dass vllt einer von euch dort einen Fehler findet.

3.170 Beiträge seit 2006
vor 14 Jahren

Hallo,

ich bin jetzt nicht ganz sicher, aber brauchst Du eigentlich den Servernamen wenn Du über LDAP gehst? Ich dachte das braucht man nur wenn man sich auf einen bestimmten Rechner in der Domäne verbinden will, aber nicht für den Benutzer -> da müsste er sich eigentlich selber den Domänencontroller raussuchen. Versuch mal mit

DirectoryEntry uEntry = new DirectoryEntry("LDAP://cn=MaxMustermann,ou=jugendliche,ou=benutzer,dc=serverhome,dc=de", "Administrator@serverhome.de", "Test", AuthenticationTypes.None);

Gruß, MarsStein

Edit: So steht's auch hier: http://msdn.microsoft.com/de-de/library/system.directoryservices.directoryentry.path.aspx unter "Hinweise".

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

T
Theki Themenstarter:in
55 Beiträge seit 2009
vor 14 Jahren

Danke, hast recht, müsste theoretisch so klappen, habe die Änderungen so vorgenomen.

Kann leider erst an Donnerstag wieder in diesem Domänennetzwerk arbeiten.

dc=serverhome,dc=de"

Weiß nur nich, ob dies so richtig ist oder so:

dc=serverhome.de

P.S.: Werde mich dann melden 😉

T
253 Beiträge seit 2006
vor 14 Jahren

die erster Variante sollte es für einen fullqualified Domainname sein.

T
Theki Themenstarter:in
55 Beiträge seit 2009
vor 14 Jahren

So tut mir leid, ich konnte erst jetzt antworten und habe es grade mal mit euren vorschlägen probiert.

Ich benutze nun follgenden Code:


string neuPW = "123";
DirectoryEntry uEntry = new DirectoryEntry("LDAP://cn=MaxMustermann,ou=jugendliche,ou=benutzer,dc=serverhome.de", "Administrator@serverhome.de", "Test", AuthenticationTypes.None);

                uEntry.Options.PasswordPort = 389;
                uEntry.Options.PasswordEncoding = PasswordEncodingMethod.PasswordEncodingClear;

                uEntry.Invoke("SetPassword", new object[] { neuPW});
                uEntry.Properties["LockOutTime"].Value = 0; //unlock account

                uEntry.Close();

Beim Auführen, bekomm ich nun follgenden Fehler:


System. DirectoryServices.DirectorySericesCOMException (0x8007202B): Eine Referenzauswertung wurde vom Server zurückgesendet.

Was ist dort noch falsch?

T
Theki Themenstarter:in
55 Beiträge seit 2009
vor 14 Jahren

Auch wenn ich ungern pushe... suche bin ich immer noch auf der Suche nach meinem Fehler..