Avatar billede kennethv Nybegynder
15. januar 2009 - 12:16 Der er 7 kommentarer og
1 løsning

Adgang til AD via ADSI

Jeg har siddet og "leget" lidt med ADSI og har fundet ud af at hver gang jeg skal have fat i et felt f.eks Description, som er tomt, får jeg en access denied. Jeg har 3 OU'er som ikke har nogen description og dem er jeg ikke interesseret i at tilføje til min Listbox.

Jeg har prøvet forskellige måder at undgå dette, men resultatet er det samme.

procedure TfrmLDAP.AddToList(disp: IADs);
var adOU : IADsOU;
begin
  ADsGetObject(Disp.ADsPath, IADsOU, adOU);
  if (adOU.Name = 'Common') or (adOU.Name = 'Organization') or (adOU.Name = 'TransferZone') then
  begin
//
  end
  else
    lbCountry.Items.Add(adOU.Description);
end;

procedure TfrmLDAP.AddToList(disp: IADs);
var adOU : IADsOU;
begin
  ADsGetObject(Disp.ADsPath, IADsOU, adOU);
  if not (adOU.Name = 'Common') or not (adOU.Name = 'Organization') or not (adOU.Name = 'TransferZone') then
    lbCountry.Items.Add(adOU.Description);
end;

procedure TfrmLDAP.AddToList(disp: IADs);
var adOU : IADsOU;
begin
  ADsGetObject(Disp.ADsPath, IADsOU, adOU);
  if adOU.Description <> '' then
    lbCountry.Items.Add(adOU.Description);
end;
Avatar billede spil2vind Nybegynder
16. januar 2009 - 09:35 #1
Hvis du sender et link til komponenten ADSI, så skal jeg prøve at kigge på det
Avatar billede kennethv Nybegynder
16. januar 2009 - 09:57 #2
http://www.agnisoft.com/white_papers/active_directory.asp

Jeg har brugt noget af deres kode, som hedder adsicode.zip

adshlp.pas
Avatar billede spil2vind Nybegynder
16. januar 2009 - 10:43 #3
ADSI hentet og kan man teste ud fra den stump kode du har ovenstående eller behøver jeg mere for at teste?
Avatar billede kennethv Nybegynder
16. januar 2009 - 11:13 #4
Godt spørgsmål. Er ikke selv såååå skrap til ADSI endnu, men jeg kan vedhæfte det kode hvor jeg "kalder" formen showmodal.  Ellers ved jeg ikke sådan lige hvad du skal bruge.

procedure TFrmMain.BitBtn3Click(Sender: TObject);
var adOU : IADsContainer;
begin
  with TFrmLDAP.Create(self) do
  try
    CoInitialize(nil);
    ADsGetObject('LDAP://OU=FirmaNavn,DC=ad,DC=firmanavn,DC=org', IADsContainer, adOU);
    adOU.Filter := VarArrayOf(['OrganizationalUnit']);
    OU := adOU;
    showmodal;
  finally
    CoUninitialize;
    free;
  end;
end;


--------------------- new unit ---------------

unit ldapform;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ActiveDs_TLB, adshlp, ExtCtrls;

type
  TfrmLDAP = class(TForm)
    BitBtn1: TBitBtn;
    Panel1: TPanel;
    lbCountry: TListBox;
    procedure FormShow(Sender: TObject);
  private
    procedure AddToList(disp: IADs);
  public
    OU : IADsContainer;
  end;

var
  frmLDAP: TfrmLDAP;

implementation

{$R *.dfm}

procedure TfrmLDAP.AddToList(disp: IADs);
var adOU : IADsOU;
begin
  ADsGetObject(Disp.ADsPath, IADsOU, adOU);
  if {(adOU.Name <> '') and }(adOU.Description <> '') then
    lbCountry.Items.Add(adOU.Description);
end;

procedure TfrmLDAP.FormShow(Sender: TObject);
begin
  if OU <> nil then
    AdsEnumerateObjects(OU, AddToList);
end;

end.
Avatar billede spil2vind Nybegynder
16. januar 2009 - 11:17 #5
OK får formentlig kigget på det i løbet af weekenden
Avatar billede kennethv Nybegynder
23. januar 2009 - 12:12 #6
Har du fået set på det?
Avatar billede kennethv Nybegynder
27. januar 2009 - 09:11 #7
spil2vind har du fået set på det?

Eller er der andre der har kunne give et input?

Point nu = 100
Avatar billede kennethv Nybegynder
27. januar 2009 - 13:02 #8
Har fået løst problemet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester