代码之家  ›  专栏  ›  技术社区  ›  ConcernedOfTunbridgeWells

奇怪的COM互操作异常0x80005000使用系统.目录服务.帐户管理图书馆

  •  1
  • ConcernedOfTunbridgeWells  · 技术社区  · 14 年前

    System.DirectoryServices.AccountManagement .

    我已经获得了一个用户和分组,就像下面的示例代码,这适用于其他操作,比如启用或禁用帐户。

    group = System.DirectoryServices.AccountManagement.GroupPrincipal.FindByIdentity(_UserContext, Name);
    
    user = System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(_UserContext, Name);
    

    现在,尝试将用户添加到组中,如:

    group.Members.Add(user);
    

    this codeproject sample 也在做同样的事情。

    有没有人看到这个错误,或者知道是什么原因造成的?

    堆栈跟踪顶部:

    Unhandled Exception: System.DirectoryServices.AccountManagement.PrincipalOperati
    onException: Unknown error (0x80005000) ---> System.Runtime.InteropServices.COME
    xception: Unknown error (0x80005000)
       at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
       at System.DirectoryServices.DirectoryEntry.Bind()
       at System.DirectoryServices.DirectoryEntry.get_AdsObject()
       at System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne
    )
       at System.DirectoryServices.DirectorySearcher.FindOne()
       at System.DirectoryServices.AccountManagement.ADStoreCtx.IsMemberOfInStore(Gr
    oupPrincipal g, Principal p)
       --- End of inner exception stack trace ---
       at System.DirectoryServices.AccountManagement.ADStoreCtx.IsMemberOfInStore(Gr
    oupPrincipal g, Principal p)
       at System.DirectoryServices.AccountManagement.PrincipalCollection.ContainsNat
    iveTest(Principal principal)
       at System.DirectoryServices.AccountManagement.PrincipalCollection.Contains(Pr
    incipal principal)
       at System.DirectoryServices.AccountManagement.PrincipalCollection.Add(Princip
    al principal)
       at System.DirectoryServices.AccountManagement.PrincipalCollection.Add(UserPri
    ncipal user)
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   Benjamin Riggs    13 年前

    我在一个(GroupPrincipal实例)中也遇到了同样的问题。成员。添加(用户主体实例)。

    由于GetUnderlyingObject方法,解决方法(在IronPython中)相当简单。

    de = group.GetUnderlyingObject
    # Group member DNs are kept in 'member' attribute in LDAP
    de.Properties['member'].Add(user.DistinguishedName)
    de.CommitChanges() # Save your work
    
        2
  •  2
  •   anisoptera    13 年前

    刚刚遇到这个问题,注意到代码项目示例在创建上下文时显式地使用了域名(而不是使用null)。我修改了我的代码来显式地指定域名,现在它工作得很好-我可以group.Members.Add组成员(用户)没有问题。