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

VB.NET从active directory中删除用户

  •  0
  • Lima  · 技术社区  · 15 年前

    嗨,我正在尝试创建一个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 was unhandled,unspecified错误。使用group.invoke时,我收到错误targetInvoke异常未处理。

    我是VB.NET新手,如果有人能提供帮助,我将不胜感激。

    我在.NET2.0中编写代码,因为我不确定它所在的服务器是否安装了3.5。

    1 回复  |  直到 14 年前
        1
  •  1
  •   user295190 user295190    15 年前

    嗯,错误信息 0x80004005 E_FAIL Unspecified failure

    尝试更改行:

    group.Properties("member").Remove(x.Properties("OrganizationalUnit").Value)
    

    group.Invoke("Remove", New Object() {x.Path.ToString()})
    

    VB.net Heaven 埃里卡·埃利。本文介绍了使用activedirectory的各种用例。

    我希望这有帮助。

    推荐文章