Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用System.DirectoryServices.AccountManagement库时出现奇怪的COM互操作异常0x80005000_C#_.net_Active Directory_Com Interop - Fatal编程技术网

C# 使用System.DirectoryServices.AccountManagement库时出现奇怪的COM互操作异常0x80005000

C# 使用System.DirectoryServices.AccountManagement库时出现奇怪的COM互操作异常0x80005000,c#,.net,active-directory,com-interop,C#,.net,Active Directory,Com Interop,我正在尝试编写一些东西,其中包括使用VS2010、.Net4和System.DirectoryServices.AccountManagement中的库工具,将用户添加到广告组中 我已经获得了一个用户和分组代码,如下面的示例,这适用于其他操作,如启用或禁用帐户 group = System.DirectoryServices.AccountManagement.GroupPrincipal.FindByIdentity(_UserContext, Name); user = System.Di

我正在尝试编写一些东西,其中包括使用VS2010、.Net4和
System.DirectoryServices.AccountManagement
中的库工具,将用户添加到广告组中

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

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

user = System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(_UserContext, Name);
现在,尝试将用户添加到组中,如下所示:

group.Members.Add(user);
我得到一个堆栈跟踪错误,其开头类似于下面列出的,带有COM互操作错误0x80005000(未知)。其他用户以及32位和64位版本也会发生这种情况。在网上搜索这篇文章会发现一些论坛问题,但我找不到任何答案。从理论上讲,这应该行得通——做的事情基本相同

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

堆栈跟踪顶部:

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)

我在(GroupPrincipal实例).Members.Add(UserPrincipal实例)中也遇到了同样的问题

由于使用了GetUnderlineObject方法,解决方法(在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

我在(GroupPrincipal实例).Members.Add(UserPrincipal实例)中也遇到了同样的问题

由于使用了GetUnderlineObject方法,解决方法(在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

刚刚遇到这个问题,注意到代码项目示例在创建上下文时显式使用了域名(而不是使用null)。我将代码更改为显式指定域名,现在工作正常-我可以毫无问题地对.Members.Add(user)进行分组。

刚刚遇到这个问题,并注意到代码项目示例在创建上下文时显式使用了域名(而不是使用null)。我更改了代码以明确指定域名,现在它工作正常-我可以分组.Members.Add(user)而不会出现问题。

是的,我找到了类似的解决方案,并使用了该解决方案。是的,我找到了类似的解决方案,并使用了该解决方案。