Bueno amigos, ya logro enumerar los grupos. Aca les dejo el codigo por si le hace falta a alguien. Ahora lo que no se es como agregarle un grupo a un usuario seleccionado.
Código Delphi
[-]
procedure ....
var
dominio : string;
begin
dominio := frmSessionInit.edt_domain.Text;
if not frmSessionInit.chk_another_user.Checked then
ADsOpenObject('WinNT://' + dominio,
frmSessionInit.cbb_username.Text,
frmSessionInit.edtPassword.Text, 1, IADsContainer,
dom)
else
ADsGetObject('WinNT://' + dominio, IADsContainer, dom);
dom.Filter := VarArrayOf(['group']);
box_grupos.Clear;
ADsEnumerateObjects(dom, insertar_grupos);
end;
Aca la funcion CallBack que se usa para procesar cada uno de los grupos por separado
Código Delphi
[-]
var
vItem: TListItem;
groupType: OleVariant;
tipoGrupo: string;
begin
vItem := box_grupos.Items.Add;
vItem.ImageIndex := 2;
vItem.Caption := disp.Name;
groupType := disp.Get('groupType');
if (groupType = ADS_GROUP_TYPE_GLOBAL_GROUP) then
tipoGrupo := 'Grupo Global'
Else If (groupType = ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP) Then
tipoGrupo := 'Grupo Local'
else
tipoGrupo := 'Desconocido';
vItem.SubItems.Add(tipoGrupo);
vItem.SubItems.Add(IADsGroup(disp).Description);
end;