Nếu bạn đang tìm kiếm để tương tác với Active Directory, bạn không cần phải biết nơi FSMO vai trò là dành cho hầu hết các phần. Nếu bạn muốn thay đổi cấu trúc liên kết AD từ chương trình của bạn (tôi sẽ không), hãy nhìn vào lớp DomainController.
Nếu bạn muốn thay đổi mật khẩu người dùng, bạn có thể gọi những hành động đó trên đối tượng người dùng và Active Directory sẽ đảm bảo rằng các thay đổi được sao chép đúng cách.
sao chép từ 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");
}
Điều này sẽ không hoạt động đối với trường hợp tên miền chéo (ví dụ: máy của bạn không nằm trong miền có Trình kiểm soát miền). Xem câu trả lời của tôi cho một giải pháp như vậy. –
@Firo: Cảm ơn, đã khắc phục. Lỗi được cố định bởi 'string []' -> 'IEnumerable' –
abatishchev