Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Domains auflisten über COM & ActiveDirectory (https://www.delphipraxis.net/111643-domains-auflisten-ueber-com-activedirectory.html)

gore 7. Apr 2008 08:26


Domains auflisten über COM & ActiveDirectory
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz