Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)

时间:2022-11-29 16:32:54

活动目录Active Directory是用于Windows Server的目录服务,它存储着网络上各种对象的有关信息,并使该信息易于管理员和用户查找及使用。Active Directory使用结构化的数据存储作为目录信息的逻辑层次结构的基础。

在某些情况下我们需要通过程序来读取Active Directory中的信息,我们可以使用微软提供的ADSI(Active Directory Services Interface)。ADSI是一组以COM接口形式提供的目录 服务,因此任何支持COM编程的语言如Delphi、VB、VC等都可以使用ADSI。

在Delphi中使用ADSI需要导入活动目录类型库,具体操作如下:在IDE中选择菜单“Project->Import Type Library”,在弹出的对话框中选择“Active Ds Type Libarary(version 1.0)”,单击“Create Unit”,Delphi会自动产生封装单元文件。只要在相应文件中引用该单元文件即可使用ADSI了。下面给出一个在Delphi6中使用ADSI访问Windows Server活动目录信息的示例代码。

Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)unitUnit2;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)interface
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)uses
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Dialogs,ActiveDs_TLB,ActiveX,ComObj,ComCtrls,StdCtrls;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)type
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)TForm2=class(TForm)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)GroupBox1:TGroupBox;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)lvGroup:TListView;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)GroupBox2:TGroupBox;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)lvUser:TListView;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Button1:TButton;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)procedureButton1Click(Sender:TObject);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)private
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务){Privatedeclarations}
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)functionGetObject(constName:String):IDispatch;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)procedureEnumerateUsers(Container:IAdsContainer);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)procedureAddGroupToListView(AGroup:IADsGroup);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)procedureAddUserToListView(AUser:IAdsUser);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)public
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务){Publicdeclarations}
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)var
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Form2:TForm2;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)implementation
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务){$R*.dfm}
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务){TForm2}
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)procedureTForm2.AddGroupToListView(AGroup:IADsGroup);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)begin
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)lvGroup.Items.Add.Caption:=AGroup.Name;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)procedureTForm2.AddUserToListView(AUser:IAdsUser);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)begin
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)withlvUser.Items.Adddobegin
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Caption:=AUser.FullName;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)SubItems.Add(VarToStr(AUser.Get('sAMAccountName')));
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)procedureTForm2.EnumerateUsers(Container:IAdsContainer);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)var
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)ADsObj:IADs;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Value:LongWord;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Enum:IEnumVariant;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)ADsTempOjb:OleVariant;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)begin
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Enum:=(Container._NewEnum)asIEnumVariant;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)while(Enum.Next(1,ADsTempOjb,Value)=S_OK)dobegin
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)ADsObj:=IUnknown(ADsTempOjb)asIADs;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)try
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)ifSameText(ADsObj.Class_,'Group')thenbegin
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)AddGroupToListView(ADsObjasIADsGroup);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)EnumerateUsers(ADsObjasIAdsContainer);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)elseifSameText(ADsObj.Class_,'User')then
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)AddUserToListView(ADsObjasIADsUser);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)except
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)functionTForm2.GetObject(constName:String):IDispatch;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)var
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Eaten:Integer;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Moniker:IMoniker;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)BindContext:IBindCtx;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)begin
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)OleCheck(CreateBindCtx(0,BindContext));
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)OleCheck(MkParseDisplayName(BindContext,PWideChar(WideString(Name)),Eaten,Moniker));
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)OleCheck(Moniker.BindToObject(BindContext,Nil,IDispatch,Result));
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)procedureTForm2.Button1Click(Sender:TObject);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)var
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Container:IADsContainer;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)begin
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Container:=GetObject('LDAP://OU=Suzhou,OU=root,DC=ap,DC=emersonclimate,DC=org')asIADsContainer;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)lvGroup.Items.BeginUpdate;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)lvUser.Items.BeginUpdate;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)try
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Button1.Enabled:=False;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)EnumerateUsers(Container);
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Button1.Enabled:=True;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)finally
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)lvGroup.Items.EndUpdate;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)lvUser.Items.EndUpdate;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)Container._Release;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end;
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)
Delphi访问活动目录(使用COM,活动目录Active Directory是用于Windows Server的目录服务)end.
 
http://cmao.iteye.com/blog/2246028