Delphi-使用ADSI-如何检索所有组成员

时间:2016-11-17 07:26:52

标签: delphi active-directory delphi-10-seattle adsi

我正在使用Active Directory服务接口并尝试检索 群组中的所有用户。 我有这行代码,它给我带来了小组本身:

var
  Group:IADSGroup;
begin
  ADsGetObject('LDAP://CN=myGroup,CN=Users,DC=dltomb,DC=dltomb25,DC=com', IADSGroup, Group);
......

IADSGroup接口有一个“IsMember”函数,它获取表示用户的WideString,如果用户是该组的成员,则返回true。 问题是我总是从这个得到一个否定的答案...... (我正在检查的用户是该组的唯一用户,并且还检查了Group.Count以查看该组中有一个成员)。 如果真的想对这个问题有所帮助,即使有人可以指出其他解决方法,例如枚举小组成员(我也不能这样做)

1 个答案:

答案 0 :(得分:-1)

好的我找到了如何迭代小组

var
  groupName: string;
  Fetched: Cardinal;
  ResultItem: OleVariant;
  members: IADsMembers;
..............
groupName:= Group.get_Name;
members:= Group.Members;
enum:= members._NewEnum as IEnumVariant;
Enum.Reset;

Enum.Next(1, ResultItem, Fetched);

while Fetched = 1 do
begin
  GroupMember := IDispatch(ResultItem) as IADS;
  //do something
  Enum.Next(1, ResultItem, Fetched);
end;

但我现在有另一个问题,在添加其他成员时我看不到该组的所有成员。我认为这是因为由于某种原因它只发现用户属于这个组,并且该组不是他们的主要组。我如何才能获得我正在搜索其作为主要群组的用户?