Wenn Sie das Active Directory kommunizieren suchen, sollten Sie nicht wissen, wo die FSMO Rollen zum größten Teil sind. Wenn Sie die AD-Topologie von Ihrem Programm ändern möchten (würde ich nicht), sehen Sie sich die Klasse DomainController an.
Wenn Sie ein Benutzerkennwort ändern möchten, können Sie diese Aktionen für das Benutzerobjekt aufrufen, und Active Directory stellt sicher, dass die Änderungen korrekt repliziert werden.
von http://www.rootsilver.com/2007/08/how-to-change-a-user-password
public static void ChangePassword(string userName, string oldPassword, string newPassword)
{
string path = "LDAP://CN=" + userName + ",CN=Users,DC=demo,DC=domain,DC=com";
//Instantiate a new DirectoryEntry using an administrator uid/pwd
//In real life, you'd store the admin uid/pwd elsewhere
DirectoryEntry directoryEntry = new DirectoryEntry(path, "administrator", "password");
try
{
directoryEntry.Invoke("ChangePassword", new object[]{oldPassword, newPassword});
}
catch (Exception ex) //TODO: catch a specific exception ! :)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine("success");
}
kopiert
Dies funktioniert nicht für eine domänenübergreifende Situation (z. B. ist Ihr Computer nicht Teil der Domäne, in der der Domänencontroller vorhanden ist). Siehe meine Antwort für eine solche Lösung. –
@Firo: Danke, behoben. Fehler wurde behoben durch 'string []' -> 'IEnumerable' –
abatishchev