Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Alle Domänen auflisten... (https://www.delphipraxis.net/101095-alle-domaenen-auflisten.html)

cherry 8. Okt 2007 13:32


Alle Domänen auflisten...
 
Hi.. ja natürlich kenne ich die DPS, aber das beste Resultat das ich gefunden habe war folgendes:

Zitat:

...

Function SystemFocusDialog listet außer den Domains auch noch alle User und deren weitere Information, nicht gerade das was ich will.

WNetEnumResource ist ein Netwalking und braucht dementsprechend lange, bis zu mehrere Minuten. Auch nicht gerade prickelnd.

Gibt es keine andere Möglichkeit, immerhin muß das System die Domains kennen, sonst wäre dies mit SystemfocusDialog nicht so schnell möglich ?

gargano
...

und genau das suche ich:
eine unkomplizierte und schnelle möglichkeit alle verfügbaren domänen im netzwerk aufzulisten.


Zusatzinfo:
Ich brachche dies für mein kleines AD Suchprogramm... es soll aber automatisch verbinden, nicht das man noch domänen angeben zu braucht.

hu

RWarnecke 8. Okt 2007 13:38

Re: Alle Domänen auflisten...
 
Ich bin zwar in der Domainenverwaltung nicht ganz so bewandert, aber der Primary-Domainencontroller müsste das ganze doch wissen. Schaue Dir mal diesen Befehl MSDN-Library durchsuchenDsGetDcName an.

cherry 8. Okt 2007 13:40

Re: Alle Domänen auflisten...
 
ok, das ist schon mal ein Anfag. Aber wie man das jetzt anstellt :gruebel:

muss doch jeder 10te her schon mal gemacht haben?!?!?

:cyclops:

RWarnecke 8. Okt 2007 13:42

Re: Alle Domänen auflisten...
 
Ich war etwas zu langsam mit dem Editieren :

Schaue Dir mal diesen Befehl MSDN-Library durchsuchenDsGetDcName an.

cherry 8. Okt 2007 13:49

Re: Alle Domänen auflisten...
 
leider nein! diese funktion gibt mir lediglich den namen des primary DC zurück! - Als Parameter wird die Domäne verlangt.
- Das ist leider nicht das was ich brauche! :hi:

RWarnecke 8. Okt 2007 14:10

Re: Alle Domänen auflisten...
 
Zitat:

Zitat von cherry
leider nein! diese funktion gibt mir lediglich den namen des primary DC zurück! - Als Parameter wird die Domäne verlangt.
- Das ist leider nicht das was ich brauche! :hi:

Hast Du Dir auch alles dazu durchgelesen ? Denn über die Struktur MSDN-Library durchsuchenDOMAIN_CONTROLLER_INFO kannst Du die Domain ermitteln.

Denn wenn mich mein Englisch noch nicht ganz verlassen hat, wäre genau dieses Zitat, das was Du suchst :
Zitat:

If the Flags parameter contains the DS_GC_SERVER_REQUIRED flag and DomainName is NULL, DsGetDcName attempts to find a global catalog in the forest of the computer identified by ComputerName, which is the local computer if ComputerName is NULL.
Ich kann es leider nicht testen, da ich keinen Domainenumgebung mit mehreren Domainen zur Verfügung habe.

cherry 8. Okt 2007 14:16

Re: Alle Domänen auflisten...
 
ok, vielleicht hast du recht. Aber ich Programmiere nicht mit .NET, kann ich trotzdem irgendwie auf diese Funktion zugreiffen?

RWarnecke 8. Okt 2007 14:25

Re: Alle Domänen auflisten...
 
Das sind API-Funktionen, die Du übersetzen musst.

cherry 8. Okt 2007 14:26

Re: Alle Domänen auflisten...
 
:wiejetzt: wie tu ich denn die übersetzen? muss ich zuerst eine komponente installieren... und dann die funktion umschreiben oder wie jetzt?

RWarnecke 8. Okt 2007 14:29

Re: Alle Domänen auflisten...
 
Zitat:

Zitat von cherry
:wiejetzt: wie tu ich denn die übersetzen? muss ich zuerst eine komponente installieren... und dann die funktion umschreiben oder wie jetzt?

Wie wäre es mal mit einer Runde googlen Bei Google suchendsgetdcname delphi.

cherry 9. Okt 2007 07:45

Re: Alle Domänen auflisten...
 
Ok... ich hab alles versucht!!! Hab eine übersetzug unter Koders.com gefunden. Damit die Funktioniert musste ich ca. 5 weitere Units "anhängen" (habe ich alles unter Koders gefunden). Das Problem ist jetzt nur -> Wie rufe ich die Funktion auf, ich kriegs einfach nicht hin.

Und zweitens -> Brauche ich wirklich 5 Units um mir die Domänen aufzulisten
Und drittens -> soviel ich gelesen habe wird nur die Domäne angezeigt in der ich mich befinde?!

Hat das jmd schon mal gemacht...
Ich bin weiter am testen und schreibe es hier rein falls ich was neues habe...

sakura 15. Okt 2007 11:11

Re: Alle Domänen auflisten...
 
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 ;)

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.

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