Ich habe da eine Lösung gefunden, welche zu funktionieren scheint
Ich habe es im Büro getestet (klitzekleine Domain) und bei BMW Worldwide (nicht gerade klitzeklein
)
Beispielcode und Erklärung:
http://www.gumpi.com/Blog/2007/10/15...sAndSites.aspx
Auszug aus dem Code. Zuerst musst Du die Basisdomain aus dem AD ermitteln:
Delphi-Quellcode:
// get the forest base
try
DirObj := VBGetObject('LDAP://rootDSE') as IADs;
Root := (VBGetObject('LDAP://' + DirObj.Get('rootDomainNamingContext')) as IADs).ADsPath;
except
mmoReport.Lines.Add('Computer is not running in domain setup.');
Exit;
end;
// replace LDAP with GC (global catalog)
Root := 'GC' + Copy(Root, 5, MaxInt);
mmoReport.Lines.Add(Root);
Dann musst Du via
ADO die Domains bzw. Sites ermitteln und das Recordset iterieren:
Delphi-Quellcode:
// ADO Abfragen je nach Wunsch
Query := '
SELECT Name FROM ' + QuotedStr(Root) + '
WHERE objectCategory=''
domain''
';
Query := '
SELECT Name FROM ' + QuotedStr(Root) + '
WHERE objectCategory=''
site''
';
Ein komplettes Beispiel zum Download findest Du in meinem Blog verlinkt
...
...