Directoryservices.directoryentry Vb Adodb

Тема в разделе ".NET", создана пользователем Meites, 4 дек 2008.

Статус темы:
Закрыта.
  1. Meites

    Meites Гость

    Код (Text):
            Dim entry As New DirectoryServices.DirectoryEntry("<censored>")
    Dim mySearcher As New System.DirectoryServices.DirectorySearcher(entry)
    Dim result As System.DirectoryServices.SearchResult

    Dim Record As Collection
    ADFindUser = New Collection

    mySearcher.Filter = ("(&(!objectClass=computer)(objectClass=user)(|(cn=*" & findstring & "*)(sAMAccountName=*" & findstring & "*)))")

    For Each result In mySearcher.FindAll()
    Record = New Collection
    Record.Add(result.GetDirectoryEntry().Properties("cn").Value.ToString, "cn")
    If result.GetDirectoryEntry().Properties("department").Value = Nothing Then
    Record.Add("", "department")
    Else
    Record.Add(result.GetDirectoryEntry().Properties("department").Value.ToString, "department")
    End If
    If result.GetDirectoryEntry().Properties("mail").Value = Nothing Then
    Record.Add("", "mail")
    Else
    Record.Add(result.GetDirectoryEntry().Properties("mail").Value.ToString, "mail")
    End If
    Record.Add(result.GetDirectoryEntry().Properties("distinguishedName").Value.ToString, "distinguishedName")
    ADFindUser.Add(Record, result.GetDirectoryEntry().Properties("distinguishedName").Value)
    Next
    mySearcher = Nothing
    entry.Close()
    entry = Nothing
    Код (Text):
            Const ADS_SCOPE_SUBTREE = 2
    Dim objConnection, objCommand, objRecordset As Object
    Dim Record As Collection
    ADFindUser = New Collection
    objConnection = CreateObject("ADODB.Connection")
    objCommand = CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open("Active Directory Provider")
    objCommand.ActiveConnection = objConnection
    objCommand.Properties("Page Size") = 10000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    objCommand.CommandText = "SELECT cn,canonicalName,createTimeStamp,department,displayname,distinguishedName,lastLo
    gon,logonCount,pwdLastSet,sAMAccountName,title,useraccountcontrol,mail,accountEx
    p
    ires FROM 'LDAP://dc=<censored>,dc=<censored>' WHERE cn = '*" & findstring & "*' or sAMAccountName = '*" & findstring & "*' and objectCategory='person'"
    objRecordset = objCommand.Execute
    If objRecordset.RecordCount > 0 Then
    objRecordset.MoveFirst()
    Do Until objRecordset.EOF = True
    Record = New Collection
    Record.Add(objRecordset.fields("cn").value, "cn")
    Record.Add(objRecordset.fields("createTimeStamp").value, "createTimeStamp")
    Record.Add(objRecordset.fields("department").value, "department")
    Record.Add(objRecordset.fields("displayname").value, "displayname")
    Record.Add(objRecordset.fields("distinguishedName").value, "distinguishedName")
    Record.Add(objRecordset.fields("logonCount").value, "logonCount")
    Record.Add(objRecordset.fields("sAMAccountName").value, "sAMAccountName")
    Record.Add(objRecordset.fields("title").value, "title")
    Record.Add(objRecordset.fields("useraccountcontrol").value, "useraccountcontrol")
    Record.Add(objRecordset.fields("mail").value, "mail")
    ADFindUser.Add(Record, objRecordset.fields("distinguishedName").value)
    objRecordset.MoveNext()
    Loop
    End If
    objRecordset.Close()
    objConnection.Close()
    практически 2 этих куска кода делают одно и тоже, я понимаю, что написано немного криво но не суть..
    1 работает очень медленно, 2 быстрее, но 2 сделан еще больше через жопу чем 1 8))
    скажите как быть, использовать 2 метод... или что то переделать в 1...
    проблема еще и в том, что в 1 случаи идёт долго поиск, долго чтение параметров...
    что можете посоветовать?

    вообще я писал всё изначально на vbs 8)) потом перенёс в vb.net всё идеально работало (2 вариант) потом переделал на объекты vb.net 2005 и такая фигня
     
  2. Meites

    Meites Гость

    спасибо за ответ :rolleyes: сам разобрался <_<
     
Статус темы:
Закрыта.

Поделиться этой страницей