Я использую службу WCF для предоставления некоторых функций управления Active Directory нашим сотрудникам службы поддержки, не предоставляя им членство в группах, необходимое для непосредственного управления AD. Добавление пользователей в группы и их удаление из групп работает как нельзя лучше с существующими пользователями, но каждый раз, когда я создаю нового пользователя, он выдает следующий забавный код:
The server is unwilling to process the request. (Exception from HRESULT: 0x80072035)
Код, который я использую для добавления пользователя в группу:
public bool AddGroupToUser(string userDn, string groupDn)
{
try
{
DirectoryEntry groupEntry = LdapTools.GetDirectoryEntry(groupDn);
groupEntry.Properties["member"].Add(userDn);
groupEntry.CommitChanges();
groupEntry.Close();
return true;
}
catch (DirectoryServicesCOMException)
{
return false;
}
}
Все, что я прочитал на эту тему, довольно расплывчато, и я не могу понять, ПОЧЕМУ возникает исключение. Есть идеи?
UPDATE
Это код, который я использую для создания пользователя в AD:
try
{
DirectoryEntry container = GetDirectoryEntry(storageOu);
DirectoryEntry newUser = container.Children.Add("CN=" + employee.FullName, "user");
newUser.Properties["sAMAccountName"].Value = employee.Username;
newUser.Properties["displayName"].Value = employee.FullName;
newUser.Properties["givenName"].Value = employee.FirstName;
newUser.Properties["sn"].Value = employee.LastName;
newUser.Properties["department"].Value = departmentName;
newUser.Properties["userPrincipalName"].Value = employee.Username + "@APEX.Local";
newUser.CommitChanges();
newUser.Invoke("SetPassword", new object[] { employee.Password });
newUser.CommitChanges();
AdsUserFlags userSettings = AdsUserFlags.NormalAccount;
newUser.Properties["userAccountControl"].Value = userSettings;
newUser.CommitChanges();
ldapPath = newUser.Path;
newUser.Close();
container.Close();
}
catch (DirectoryServicesCOMException e)
{
// Something went wrong... what???
}
catch (Exception e)
{
// Something else went wrong
}
Новый пользователь может войти в систему, и им можно манипулировать с помощью стандартных инструментов MS.