Я уже давно использую DirectoryEntry & DirectorySearcher, и он всегда работает. Недавно я узнал об AccountManagement и решил попробовать его в новом проекте. Но я не могу найти его, чтобы найти меня.
Этот старый код отлично работает:
Using oDirectoryEntry As DirectoryEntry = New DirectoryEntry("LDAP://us.psy.com", "xxx2yyy", "MyStrongPwd")
Using oDirectorySearcher As DirectorySearcher = New DirectorySearcher(oDirectoryEntry)
oDirectorySearcher.Filter = "(&(sAMAccountType=805306368)(sAMAccountName=xxx2yyy))"
Try
Return oDirectorySearcher.FindOne IsNot Nothing
Catch
Return False
End Try
End Using
End Using
Но я не могу заставить эту работу:
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "US", "DC=psy,DC=com"))
{
MessageBox.Show(context.ConnectedServer); // This shows me the server name
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "xxx2yyy"))
{
MessageBox.Show(user.SamAccountName); // results in Object reference not set to an instance of an object
user.ChangePassword("OldPwd", "NewPwd");
user.Save();
}
}
Надеясь, что кто-то увидит, что я делаю неправильно.