1

詳細のリストを取得するために、ユーザーの 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

それで、私は2つの質問があります。まず、ユーザーのドメイン名を取得するにはどうすればよいですか? DC= にあるようです (val1 がある場所) 次に、この検索を高速化する方法はありますか? 現在、クエリの実行には約 10 秒かかります。

.net 4.0 と Visual Studio 2010 を使用しています

ジェイソン

4

1 に答える 1

0

右から始めて DC コンポーネントを読むと、アカウントのレルム/ドメインが得られます。RFC2247を参照してください。

于 2013-01-29T15:30:36.587 に答える