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