Первым шагом будет ознакомление с серией статей Учебник по ADSI в Windows IT Pro. Он дает довольно хороший обзор основ ADSI и интерфейсов IADs
и того, как их использовать (я полагаю, из VBScript).
Вторым шагом в Delphi будет импорт библиотеки типов Active_Ds
- при этом должен быть создан файл ActiveDs_TLB.pas
, содержащий основные типы, интерфейсы, методы для работы с Active Directory из родного языка с использованием ADSI.
Чтобы получить доступ к собственным функциям, вам нужно использовать так называемый импорт функций для каждой функции, которую вы хотите - здесь код только для одной - ADsGetObject
:
type
TADsGetObject = function(aPathName: PWideChar; const aRIID: TGUID; out aObject): HResult; safecall;
var
ADsGetObject : TADsGetObject = nil;
initialization
hActiveDS := LoadLibrary(PChar('ActiveDS.dll')); // don't localize
if (hActiveDS = 0) then
raise Exception.Create(rc_CannotLoadActiveDS);
LoadProcAddress(hActiveDS, 'ADsGetObject', @ADsG
etObject);
Как только вы создали эти функции из внешней библиотеки, вы можете вызывать их - что-то вроде этого:
var
hr : HRESULT;
oIADs : IADs;
wsTemp : WideString;
begin
wsTemp := 'LDAP://cn=IanBoyd,cn=Users,dc=YourCompany,dc=com';
// try to bind to the ADSI object using the "sanitized" path
hr := ADsGetObject(PWideChar(wsTemp), IID_IADs, oIADs);
if Succeeded(hr) then begin
// successful - now retrieve all properties into property cache
try
oIADs.GetInfo;
except
on EOleSysError do begin
Exit;
end;
end;
// get the object's GUID
wsTemp := oIADs.GUID;
// do more stuff here.....
Далее, также посмотрите мою страницу ADSI Delphi Tips & Tricks - поэтому информация устарела, хотя (как ссылка на коллекционный компакт-диск The Delphi Magazine - кажется, больше не доступна) .
Поиск ADSI с нативным кодом довольно сложен - определенно выходит за рамки такой публикации. Я написал довольно обширную статью об этом - включая пример кода - который можно получить по запросу от меня (отправьте мне электронное письмо на мой адрес в моем профиле).