Если вы хотите взаимодействовать с Active Directory, вам не нужно знать, где по большей части находятся роли FSMO .Если вы хотите изменить топологию AD из своей программы (я бы не стал), посмотрите на класс DomainController .
Если вы хотите изменить пароль пользователя, вы можете вызвать эти действияна объекте User, и Active Directory обеспечит правильную репликацию изменений.
скопировано с 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");
}