高分求解关于ADSI的问题,特急
delphi中,如何通过ADSI取出用户名和对应的工作组信息
我要从AD中取出用户名和其所属的组(例如用户名是TOM,其所属组是IT部),用delphi具体应该如何做才能找出所有用户名及他们所相对应的组名,特急!!
我目前只能把用户名和组分别显示出来,但不知道怎么把它们联系起来,
就是说某个用户是属于哪个组,怎么样才能取出这个关系呢?
procedure TFormISA.Button1Click(Sender: TObject);
var
AdsPath:WideString;
UnknownObject:IUnknown;
Domain:IADsContainer;
begin
AdsPath:='WinNT://TEST';
//使用用户登录的信息创建域对象
OLECheck(AdsGetObject(AdsPath,IID_IADsContainer, UnknownObject));
// 获取域对象
Domain := UnknownObject as IADsContainer;
//把 IADsContainer 接口指针作为参数调用来获得域中的子对象 :
GetDomainInformation(Domain);
end;
procedure TFormISA.GetDomainInformation(Domain: IADsContainer);
var
Enum: IEnumVariant;
ADsTempObj: OLEVariant;
ADsObj: IADs;
Value: LongWord;
begin
// 获取枚举对象
Enum := (Domain._NewEnum) as IEnumVariant;
// 利用枚举对象查找
while (Enum.Next(1, ADsTempObj, Value) = S_OK) do begin
// 获得临时对象
ADsObj := IUnknown(ADsTempObj) as IADs;
// 如果是用户对象
if AdsObj.Class_ = 'User' then
ListBox1.Items.Add(ADsObj.Name);
// 如果是组对象
if AdsObj.Class_ = 'Group' then
ListBox2.Items.Add(ADsObj.Name);
end;
end;