Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Осваиваю 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 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
2-1130762140
Fast2
2005-10-31 15:35
2005.11.20
Как, во время выполнения приги, узнать колличество и имена полей


2-1130472029
Alex7
2005-10-28 08:00
2005.11.20
Раздел Initialization


2-1131082890
Ezorcist
2005-11-04 08:41
2005.11.20
Устаовка события для компонента


4-1127292865
Denizzz
2005-09-21 12:54
2005.11.20
Окно приложения прижать к панели задач (справа/слева)


8-1120145991
Radgar
2005-06-30 19:39
2005.11.20
Разбивание Timage на секции.