// 获取域信息
procedure TMainFrm.GetDomainInformation(Domain: IADsContainer);
var
Enum: IEnumVariant;
ADsTempObj: OLEVariant;
ADsObj: IADs;
Value: LongWord;
begin
//清空用户、组和计算机列表
UserListView.Items.Clear;
GroupListView.Items.Clear;
ComputerListView.Items.Clear;
//获取枚举对象,并赋值给 Enum 变量
Enum := (Domain._NewEnum) as IEnumVariant;
//利用枚举对象查找,把每个子对象赋值给临时的 OLEVariant 对象
while (Enum.Next(1, ADsTempObj, Value) = S_OK) do
begin
ADsObj := IUnknown(ADsTempObj) as IADs; //获得临时对象:OLEVariant 变量赋值给 ADSI 对象
if AdsObj.Class_ = 'User' then //如果是用户对象
AddUserToList(ADsObj);
if AdsObj.Class_ = 'Group' then //如果是组对象
AddGroupToList(ADsObj);
if AdsObj.Class_ = 'Computer' then //如果是计算机对象
AddComputerToList(ADsObj);
ADsTempObj:=Null; //释放OLEVariant
end;
end;
procedure TMainFrm.AddUserToList(ADsObj:IADs);
var aListItem:TListItem;
begin
aListItem:=UserListView.Items.Add;
aListItem.Caption:=ADsObj.Name;
aListItem.SubItems.Add(ADsObj.Class_);
aListItem.SubItems.Add(ADsObj.ADsPath);
aListItem.SubItems.Add(ADsObj.Parent);
// aListItem.SubItems.Add(ADsObj.Get('sAMAccountName'));
end;
procedure TMainFrm.AddGroupToList(ADsObj:IADs);
var aListItem:TListItem;