Einzelnen Beitrag anzeigen

gore

Registriert seit: 9. Jun 2006
Ort: Magdeburg
29 Beiträge
 
Delphi 7 Professional
 
#1

Domains auflisten über COM & ActiveDirectory

  Alt 7. Apr 2008, 08:26
Hallo,

folgenden Code nutze ich um alle Domains im Netz aufzulisten:
Delphi-Quellcode:
var C: IADsContainer;
    Enum: IEnumVariant;
    Element: OleVariant;
    IAD: IADs;
    Count: ULONG;
begin
  CoInitialize(nil);
  C:=nil;
  Enum:=nil;
  if not SUCCEEDED(ADsGetObject('WinNT:', IID_IADsContainer, C)) then raise Exception.Create('Cannot Get Object');
  if not SUCCEEDED( ADsBuildEnumerator(C, Enum) ) then raise Exception.Create('Cannot build enumerator');
  while SUCCEEDED(ADsEnumerateNext(Enum, 1, Element, Count)) AND (Count>0) do begin
     if (IDispatch(Element).QueryInterface(IID_IADs, IAD)=S_OK) AND (WideLowerCase(IAD.Class_) = 'domain') then showmessage('Domäne: '+IAD.Name);
  end;
  //if Enum<>nil then ADsFreeEnumerator(Enum); <- das erzeugt Fehler, wenn mehrmals aufgerufen
  CoUninitialize;
end;
Klappt auch alles.
Aber kann mir jemand erklären, wieso ich ADsFreeEnumerator nicht aufrufen brauche?
Existiert der Namensraum 'WinNT:' immer (zB Benutzerverwaltung in WinNT über LDAP)?
Kann man auch über den Namensraum 'LDAP:' die Domains auflisten lassen?

Danke für jede Meinung (auch über "Source ist okay" freue ich mich )!

Bernd
  Mit Zitat antworten Zitat