所以这就是我所拥有的 -
Public Shared Function GetDirectoryEntry() As DirectoryEntry
Try
Dim entryRoot As New DirectoryEntry("LDAP://RootDSE")
Dim Domain As String = DirectCast(entryRoot.Properties("defaultNamingContext")(0), String)
Dim de As New DirectoryEntry()
de.Path = "LDAP://" & Domain
de.AuthenticationType = AuthenticationTypes.Secure
Return de
Catch
Return Nothing
End Try
End Function
Protected Sub rbAddUser_Click(sender As Object, e As EventArgs) Handles rbAddUser.Click
AddMemberToGroup("LDAP://DOMAIN.local/CN=" & !DISTRIBUTIONNAME! & ",CN=Users,DC=DOMAIN,DC=local", "/CN=" & !SELECTEDUSER! & ",CN=Users,DC=DOMAIN,DC=local")
End Sub
Private Sub AddMemberToGroup(ByVal bindString As String, ByVal newMember As String)
Dim ent As DirectoryEntry = GetDirectoryEntry()
ent.Properties("member").Add(newMember)
ent.CommitChanges()
End Sub
我希望这对人们来说很容易阅读,无论如何,用户在表格中选择组和用户,当他们点击添加按钮时,我希望所选用户添加到选定的分发列表。
当它到达CommitChanges()
时,我收到此错误
类型' System.DirectoryServices.DirectoryServicesCOMException'的异常发生在System.DirectoryServices.dll但未在用户代码中处理附加信息:发生操作错误。错误-2147016672
答案 0 :(得分:1)
通过使用
<processModel>
元素,您可以在IIS 7及更高版本上配置应用程序池的许多安全性,性能,运行状况和可靠性功能。
此问题的存在是因为CommitChanges()
需要提升权限,并且可以通过将您的网络应用程序设置为在NetworkManager
下运行来修复;这可以通过两种方式完成:
直接在您的代码中,将问题代码放在此Using
语句中:
Using HostingEnvironment.Impersonate()
'Problem code goes here.
End Using
通过IIS管理器:
Identity
更改为NetworkService
答案 1 :(得分:0)
我通过传递用户凭据解决了错误
Private Sub AddMemberToGroup(ByVal bindString As String, ByVal newMember As String)
Dim ent As New GetDirectoryEntry(bindString)
ent.Properties("member").Add(newMember)
ent.Username = "DOMAIN\USERNAME"
ent.Password = "PASSWORD"
ent.CommitChanges()
End Sub
但是我的代码仍然无效,我只是没有错误。