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
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
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.
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
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 😉
die erster Variante sollte es für einen fullqualified Domainname sein.
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?
Auch wenn ich ungern pushe... suche bin ich immer noch auf der Suche nach meinem Fehler..