高分求解关于ADSI的问题,特急

wangguojian 2006-10-30 11:37:45
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;
...全文
145 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wariob 2006-10-31
顶一下
回复
wangguojian 2006-10-31
请各路高手出手相助,先谢谢了!
回复
wangguojian 2006-10-31
怎么没有高手帮忙解答呢
回复
股神 2006-10-31
顶一下
回复
相关推荐
发帖
语言基础/算法/系统设计
创建于2007-08-02

1.6w+

社区成员

Delphi 语言基础/算法/系统设计
申请成为版主
帖子事件
创建了帖子
2006-10-30 11:37
社区公告
暂无公告