Я уже довольно давно искал, как устанавливать/изменять пароль и отзывать/восстанавливать пользователя, но еще не найти решение, которое действительно работает для меня.
Я начинаю склоняться к тому, что я пересекаю домены как проблему, хотя я могу программно создавать/удалять/обновлять и даже подключать/отключать пользователей от групп.
В основном, я пробовал следующие способы:
DirectoryEntry account = new DirectoryEntry("LDAP://" + adHostname + "/" + dn, adUserName, adPassword);
account.Invoke("SetPassword", "Password1");
account.Properties["LockOutTime"].Value = 0;
account.CommitChanges();
А также
account.Invoke("SetPassword", new object[] { "Password1" });
Оба они в конечном счете выдают ошибку "Один или несколько входных параметров недействительны \r\n"
Затем я попытался использовать подход .NET 3.5 с использованием основного контекста.
using (var context = new PrincipalContext(ContextType.Domain, adHostname, myContainer, ContextOptions.SimpleBind, adUserName, adPassword))
{
using (var user = UserPrincipal.FindByIdentity(context, account.Properties["sAMAccountName"].Value.ToString()))
{
user.SetPassword(password);
}
}
Этот подход также вызывает ту же ошибку, что и выше. Если я переключу некоторые вещи (я не могу вспомнить все комбинации, которые я пробовал), это иногда вызывает "Локальная ошибка" COM Exception.
Любая помощь очень ценится.