milad.z Ответов: 2

Как Добавить учетную запись пользователя в группу (член)


Я хочу добавить пользователя учетной записи windows в группу
Я использую этот метод:
public bool AddUserToGroup(PrincipalContext ctx, string userId, string groupName)
{
     try
    {

          GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, groupName);
          group.Members.Add(ctx, IdentityType.UserPrincipalName, userId);
          group.Save();
          return true;
    }
    catch
    {
         return false;
    }
}

когда я использую этот метод со следующим PrincipalContext
new PrincipalContext(ContextType.Domain, "Lab.net");
Это прекрасно работает.

но когда я использую PrincipalContext с именем пользователя и паролем у него есть исключение
new PrincipalContext(ContextType.Domain, "Lab.net","administrator","P@ssw0rd");


исключение составляет:
System.DirectoryServices.AccountManagement.PrincipalOperationException: Information about the domain could not be retrieved (1355).
   at System.DirectoryServices.AccountManagement.Utils.GetDcName(String computerName, String domainName, String siteName, Int32 flags)
   at System.DirectoryServices.AccountManagement.ADStoreCtx.LoadDomainInfo()
   at System.DirectoryServices.AccountManagement.ADStoreCtx.get_DnsForestName()
   at System.DirectoryServices.AccountManagement.ADUtils.ArePrincipalsInSameForest(Principal p1, Principal p2)
   at System.DirectoryServices.AccountManagement.ADStoreCtx.UpdateGroupMembership(Principal group, DirectoryEntry de, NetCred credentials, AuthenticationTypes authTypes)
   at System.DirectoryServices.AccountManagement.SDSUtils.ApplyChangesToDirectory(Principal p, StoreCtx storeCtx, GroupMembershipUpdater updateGroupMembership, NetCred credentials, AuthenticationTypes authTypes)
   at System.DirectoryServices.AccountManagement.ADStoreCtx.Update(Principal p)
   at System.DirectoryServices.AccountManagement.Principal.Save()


Я могу создать пользователя с помощью этого PrincipalContext но я не могу присоединить пользователя к группе

Что я уже пробовал:

Как Добавить учетную запись пользователя в группу (член)

2 Ответов

Рейтинг:
4

milad.z

Я меняю свой метод
Это работает

public bool AddUserToGroup(PrincipalContext ctx, DirectoryEntry userId, string groupName)
        {
            try
            {
                GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName);
                if (groupPrincipal != null) {
                    DirectoryEntry entry = (DirectoryEntry)groupPrincipal.GetUnderlyingObject();
                    entry.Invoke("Add", new object[] { userId.Path.ToString() });
                    userId.CommitChanges();
                }
                else {
                    return true;
                }
                
                return true;
            }
            catch
            {
                return false;
            }
        }


Рейтинг:
13

Dylvh

Взгляните на это Как почти все в active directory статья. Это помогло мне, когда мне нужно было работать с active directory.


Maciej Los

5ed!

Dylvh

Спасибо