Active Directory搜索以获取用户域

时间:2013-01-29 15:23:34

标签: asp.net vb.net active-directory ldap vb.net-2010

我正在尝试查询Active Directory以获取用户的详细信息列表: 1.姓/姓 2.电子邮件 3.用户名 4.域名

我能够获得除域名之外的所有内容。这是我的代码:

    Dim oroot As DirectoryEntry = New DirectoryEntry("GC://ldap.someCompany.com")
    Dim osearcher As DirectorySearcher = New DirectorySearcher(oroot)
    Dim result As SearchResult

    osearcher.Filter = String.Format("(&(SAMAccountName={0}))", "myUsername")
    osearcher.PropertiesToLoad.Add("cn")
    osearcher.PropertiesToLoad.Add("SAMAccountName")   'Users login name  
    osearcher.PropertiesToLoad.Add("givenName")    'Users first name  
    osearcher.PropertiesToLoad.Add("sn")   'Users sur name  
    osearcher.PropertiesToLoad.Add("mail")   'Email address

    result = osearcher.FindOne

    Try
        myUser.UserID = result.Properties("cn").Item(0)
        myUser.Domain = ""
        myUser.EmailAddress = result.Properties("mail").Item(0)
        myUser.FirstName = result.Properties("givenName").Item(0)
        myUser.LastName = result.Properties("sn").Item(0)
        myUser.Domain = result.Properties("displayName").Item(0)

    Catch ex As Exception
        Return Nothing
    End Try

返回此字符串:GC://ldap.someCompany.com/CN=FirstName M LastName,OU = Employees,OU = Domain Users,DC = val1,DC = val2,DC = com

所以,我有两个问题。首先,我如何获得用户的域名?它似乎在DC =(我有val1) 第二,无论如何都要加快搜索速度吗?现在,运行查询大约需要10秒钟。

我正在使用.net 4.0和Visual Studio 2010 谢谢你的帮助

杰森

1 个答案:

答案 0 :(得分:0)

从右侧开始阅读DC组件,然后您拥有该帐户的领域/域。请参阅RFC2247