【发布时间】:2010-08-06 12:44:39
【问题描述】:
您好,我正在尝试创建一个 VB.NET 应用程序,该应用程序将(希望)减少在我的某些部门帮助台电话上花费的一些时间。我坚持的部分是如何使用 VB.NET 从组中删除用户。以下是我一直在玩的代码:
Public Shared Sub RemoveUserFromGroup(ByVal deUser As String, ByVal GroupName As String)
Dim entry As DirectoryEntry = ADEntry()
Dim mySearcher As DirectorySearcher = New DirectorySearcher(entry)
mySearcher.Filter = "(&(ObjectClass=Group)(CN=" & GroupName & "))"
mySearcher.PropertiesToLoad.Add("OrganizationalUnit")
mySearcher.PropertiesToLoad.Add("DistinguishedName")
mySearcher.PropertiesToLoad.Add("sAMAccountName")
Dim searchResults As SearchResultCollection = mySearcher.FindAll()
If searchResults.Count > 0 Then
Dim group As New DirectoryEntry(searchResults(0).Path)
Dim members As Object = group.Invoke("Members", Nothing)
For Each member As Object In CType(members, IEnumerable)
Dim x As DirectoryEntry = New DirectoryEntry(member)
MessageBox.Show(x.Properties("sAMAccountName").Value)
If x.Properties("sAMAccountName").Value = deUser Then
MessageBox.Show(searchResults.Item(0).Path.ToString)
MessageBox.Show(x.Properties("sAMAccountName").Value)
'group.Invoke("Remove", New Object() {x.Properties("OrganizationalUnit").Value})
group.Properties("member").Remove(x.Properties("OrganizationalUnit").Value)
End If
Next
End If
当我运行程序时,我在 group.properties 行收到一个 COMException is unhandled, unspecified 错误。使用 group.invoke 时,我收到错误 TargetInvocationException 未处理。
我的目标是将用户名 (sAMAccountName) 和组名 (sAMAccountName) 作为字符串传递给将定位用户并将其从组中删除的函数。
我是 VB.NET 的新手,如果有人能提供任何帮助,我将不胜感激。
我正在使用 .NET 2.0 进行编码,因为我不确定它所在的服务器是否会安装 3.5。
【问题讨论】:
-
向我们提供错误消息和来自 COM 异常的 HResult。 Try : [code] : Catch ex as System.DirectoryServices.DirectoryServicesCOMException : msgbox(ex.Message() & ex.HResult() & ex.ErrorCode()) : End Try
-
当添加您建议的 Try ... Catch 时,COM 异常仍然发生并且没有出现消息框。我已将 catch 行更改为 Catch ex As System.Exception,这只会显示一个带有文本“未指定错误 -2147467259”的消息框。我会调查这个错误,看看我能找到什么。谢谢,马特
标签: vb.net .net-2.0 active-directory