Si usted está buscando para interactuar Active Directory, que no debería tener que saber dónde están los papeles FSMO son en su mayor parte. Si desea cambiar la topología AD de su programa (no lo haría), mire la clase DomainController.
Si desea cambiar una contraseña de usuario, puede invocar esas acciones en el objeto Usuario y Active Directory se asegurará de que los cambios se repliquen correctamente.
copiado de 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");
}
Esto no funcionará en una situación de dominio cruzado (por ejemplo, su máquina no es parte del dominio donde existe el controlador de dominio). Vea mi respuesta para tal solución. –
@Firo: Gracias, corregido. El error fue corregido por 'cadena []' -> 'IEnumerable' –
abatishchev