В Delphi вы можете использовать два способа получения ваших данных:
либо синтаксис «SQL'ish», который вы описываете - в основном ADO доступ к Active Directory. Это легко, если у вас есть фон SQL, но он также ограничен в некоторых отношениях (например, вы не можете получить многозначные атрибуты и тому подобное). Вы можете найти Советы по поиску в ADO на сайте Ричарда Мюллера (MVP программирования AD)
импортировать библиотеку типов ActiveDs.tlb и использовать COM-интерфейсы (прежде всего IDirectorySearch
), предоставляемые ADSI, для поиска. Это довольно грязный COM-интерфейс, поэтому, вероятно, большинство из них предпочитают использовать средства поиска ADO, которые более доступны
Когда я еще программировал на Delphi, я много занимался в Active Directory и помещал на свой сайт некоторые из моих советов по Delphi / AD и пример кода . Хотя он не обновлялся довольно долго :-( Но компонент ADSISearch может быть интересен вам (и другим Delphites)
Обновление: Можете ли вы попробовать этот оператор "SQL-ish" в вашем TADOCommand ??
SELECT sAMAccountName, displayName
FROM 'LDAP://OU=Groups,DC=office,DC=domain,DC=org'
WHERE objectCategory='group'
AND member:1.2.840.113556.1.4.1941:=(CN=adam smith,OU=Users,DC=office,DC=domain,DC=org)