我有一个VB应用程序(.NET 4.0),用户可以选择他们自己的AD组,然后可以从预定义的列表中添加用户到该组。从AD中提取的组和从Oracle中提取的用户都是现有的AD用户。
您将看到三个注释代码块,我已经尝试了所有这三个代码块,并且每个代码都得到了"COMException未被用户代码处理:未指明的错误“。
<WebMethod()> _
Public Shared Function AddDirectReport(ByVal User As String, ByVal Group As String) As String
Dim GroupMembers As List(Of String) = LoadGroupMembers(Group)
If GroupMembers.Contains(User) Then
Return "USER " & User & " IS ALREADY IN GROUP " & Group
End If
Dim SearchRoot As New DirectoryEntry("[LDAP Path]")
Dim GroupSearcher As New DirectorySearcher
With GroupSearcher
.SearchRoot = SearchRoot
.Filter = "(&(ObjectClass=Group)(CN=" & Group & "))"
End With
Dim UserSearcher As New DirectorySearcher
With UserSearcher
.SearchRoot = SearchRoot
.Filter = "(&(ObjectClass=Person)(CN=" & User & "))"
End With
Dim g As DirectoryEntry = GroupSearcher.FindOne.GetDirectoryEntry
Dim u As DirectoryEntry = UserSearcher.FindOne.GetDirectoryEntry
'With u
' .Properties("memberof").Add(g)
' .CommitChanges()
'End With
'With g
' .Properties("member").Add(u)
' .CommitChanges()
'End With
'With g
' .Properties("members").Add(u)
' .CommitChanges()
'End With
Return "Success?"
End Function发布于 2012-12-25 01:56:42
This是一个很好的资源。
在它里面,你会发现你的第二个几乎就在那里。您需要的不是将DirectoryEntry传递给add方法,而是它的可分辨名称:
With g
.Properties("member").Add(u.Properties("distinguishedName").Value)
.CommitChanges()
End Withhttps://stackoverflow.com/questions/14024160
复制相似问题