Я написал программу, которая открывает соединение с удаленным сервером Windows для управления локальными учетными записями (не Active Directory).Программа выполняет следующие шаги:
- Создание пользователя
- Добавление пользователя в группу
Оба метода используют System.DirectoryServices.AccountManagement, здесьдве функции:
public void CreateUser()
{
PrincipalContext pc = new PrincipalContext(ContextType.Machine,
"host_ip",
"adminaccount",
"adminpassword");
UserPrincipal up = new UserPrincipal(pc);
up.Name = "user";
up.DisplayName = "user";
up.SetPassword("user");
up.Description = "user";
up.UserCannotChangePassword = true;
up.PasswordNeverExpires = true;
try
{
up.Save();
}
catch (Exception ex)
{
}
try
{
AddToGroup(pc, up);
}
catch (Exception ex)
{
}
}
private void AddToGroup(PrincipalContext pc, UserPrincipal u)
{
string group = "Remote Desktop Users";
GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(pc, group);
if (groupPrincipal.Members.Contains(pc, IdentityType.SamAccountName, u.SamAccountName)) //error occurs here
{
return;
}
groupPrincipal.Members.Add(u);
try
{
groupPrincipal.Save();
}
catch (Exception e)
{
}
}
Работает с утра, создание пользователя всегда завершается успешно, но я получаю эту ошибку в строке:
- if (groupPrincipal.Members.Contains (pc, IdentityType.SamAccountName, u.SamAccountName))
Произошла ошибка (1332) при перечислении членства в группе.SID участника не может быть решен.
Спасибо за ваши ответы