Форум: "WinAPI";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизОсваиваю ADSI и не получается из группы её членов получить. Найти похожие ветки
← →
EgorovAlex © (2005-09-20 10:11) [0]Для пользователей всё работает (проверка на вхождение пользователя в группу):
function UsrInGrp(User, Group: WideString): Boolean;
var
objName: WideString;
Members: IADsMembers;
Usr: IADsUser;
e: IEnumVARIANT;
Grp: IADsGroup;
hRes,hr: HRESULT;
lNumElements : ULong;
varArr : OleVariant;
begin
Result := False;
objName := "WinNT://" + WideString(CompNameStr) + "/" + User;
hRes := ADsGetObject(PWideChar(objName), IID_IADsUser, Pointer(Usr));
if (hRes = S_OK) then
begin
Members := Usr.Groups;
e := Members._NewEnum as IEnumVARIANT;
repeat
hr := ADsEnumerateNext(e, 1, varArr, lNumElements);
if (lNumElements=0) then
break;
IDispatch(varArr).QueryInterface(IADsGroup, Grp);
if (Grp.Name = Group) then
begin
Result := True;
Break;
end;
until not Succeeded(Hr);
end;
end;
А для групп вроде всё то-же самое, но не работает:
function GrpInGrp(Group1, Group2: WideString): Boolean;
var
objName: WideString;
Grp1, Grp2: IADsGroup;
Members: IADsMembers;
e : IEnumVARIANT;
hRes,hr: HRESULT;
lNumElements : ULong;
varArr : OleVariant;
begin
Result := False;
objName := "WinNT://" + WideString(CompNameStr) + "/" + Group2;
hRes := ADsGetObject(PWideChar(objName), IID_IADsGroup, Pointer(Grp2));
if (hRes = S_OK) then
begin
Members := Grp2.Members;
e := Members._NewEnum as IEnumVARIANT;
repeat
hr := ADsEnumerateNext(e, 1, varArr ,lNumElements);
if (lNumElements=0) then
break;
IDispatch(varArr).QueryInterface(IADsGroup, Grp1);
if (Grp1.Name = Group2) then
Result := True;
until not Succeeded(Hr);
end;
end;
← →
EgorovAlex © (2005-09-20 14:40) [1]Тогда задам вопрос по другому: как для глобальной группы домена можно узнать список глобальных групп в неё входящих?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.044 c