Как получить доступ к объектам с помощью поставщика ADSI LDAP, используя механизм ADO

Данная статья была ранее опубликована под номером RU187529
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
Поставщик Active Directory Service Interfaces (ADSI) Lightweight Directory Access Protocol (LDAP) поддерживает интерфейсы на основе OLE DB, позволяющие получать доступ к объектам LDAP Compliant Directories, используя ADO. Вы должны создать объект подключения ADO и установить значение "ADsDSOObject" для свойства "Provider". Вы можете указать любую строку, включая пустую, в качестве строки подключения (первого аргумента) для метода "Open" объекта подключения ADO.

Объект "CommandText" метода "Execute" объекта подключения представляет собой запрос LDAP, состоящий из четырых элементов, разделенных точкой с запятой, и представленных в следующем формате:
<LDAP://server/adsidn>;ldapfilter;attributescsv;scope
где:
  • "server" - имя (или IP-адрес) сервера, выполняющего роль ведущего узла.
  • "adsidn" - это отличительное имя (DN) начальной точки запроса в формате ADsPath c разделителями в виде "/" и корневым пространством имен в левой части. Вы можете, также, использовать формат имен с атрибутами в стиле Х.500 с относительными отличительными именами, разделенными запятыми, и корневым пространством имен справа.
  • "ldapfilter" - строка фильтра LDAP (обратитесь к спецификации "rfc2254").
  • "attributescsv" - список названий атрибутов, разделенных запятыми, которые должны быть возвращены для каждой строки в наборе записей.
  • "scope" - любое из следующих значений: "base", "onelevel" или "subtree". Примечание: Спецификация "rfc2253" описывает синтаксис LDAP, на котором основан синтаксис ADSI LDAP.


Для возврата значения ADsPath, класса и атрибутов всех объектов во всех контейнерах получателей на сервере Exchange Вы можете использовать объект CommandText (в формате URL):
LDAP:<//server/o=organization/ou=site/cn=recipients>;(objectClass=*);ADsPath,objectClass,cn;subtree''
или (в формате атрибутов имен):
<LDAP://server/cn=recipients,ou=site,o=organization>, _(objectClass=*);ADsPath,objectClass;subtree
Дополнительная информация
Следующий пример кода на MS Visual Basic иллюстрирует данный запрос:

Пример кода

      Dim conn As ADODB.Connection      Dim rs As ADODB.Recordset      Set conn = New ADODB.Connection      conn.Provider = "ADSDSOObject"      conn.Open "ADs Provider"      Set rs = conn.Execute( _            "<LDAP://server/o=organization/ou=site/cn=recipients>;" _            & "(objectClass=*);ADsPath,objectClass,cn;subtree")      While Not rs.EOF         Debug.Print rs.Fields(0).Value, rs.Fields(1).Value, _               rs.Fields(2).Value         rs.MoveNext      Wend      conn.Close
Ссылки
За дополнительной информацией по общим положениям спецификаций LDAP RFC, включая спецификации "RFC 2253" и "RFC 2254", обратитесь к следующей статье Microsoft Knowledge Base:
221606 Common LDAP RFCs
За дополнительной информацией обратитесь к следующей статье Microsoft Knowledge Base:
275917 PRB: ADSI 2.5 and MDAC 2.6 Compatibility Issues
Свойства

Номер статьи: 187529 — последний просмотр: 12/05/2015 08:46:30 — редакция: 2.1

Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic 6.0 Enterprise Edition, Microsoft Active Directory Service Interfaces 2.0, Microsoft ActiveX Data Objects 1.5, Microsoft ActiveX Data Objects 2.0, Microsoft ActiveX Data Objects 2.1 Service Pack 2, Microsoft ActiveX Data Objects 2.5

  • kbnosurvey kbarchive kbhowto kbado150 kbado200 kbado210sp2 kbado250 kbadsi kbtophit kbvbp500 kbgrpdsvbdb kbvbp600 kbmdacnosweep kbatm KB187529
Отзывы и предложения