Se siete alla ricerca di interagire Active Directory, non si dovrebbe avere per sapere dove le FSMO ruoli sono per la maggior parte. Se vuoi cambiare la topologia AD dal tuo programma (non lo farei), guarda la classe DomainController.
Se si desidera modificare una password utente, è possibile richiamare tali azioni sull'oggetto Utente e Active Directory farà in modo che le modifiche vengano correttamente replicate.
copiati da 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");
}
Questo non funziona per una situazione tra domini (ad esempio, la macchina non fa parte del dominio in cui il controller di dominio esiste). Vedi la mia risposta per una soluzione del genere. –
@Firo: Grazie, risolto. L'errore è stato risolto da 'string []' -> 'IEnumerable' –
abatishchev