Active Directory speichert die Informationen über alle Domänen seines Forests in der Konfigurationspartition. In deren Container "Partitions" ist für jede beteiligte Domäne ein Objekt der Klasse "crossRef" gespeichert, in dem einige Basisinformationen zu den Domänen abgelegt sind. Auf diese Weise kann der gesamte Forest schnell dargestellt werden, ohne dass alle Domänen einzeln abgeklappert werden müssen.
Neben den eigentlichen Domänen sind aber noch zahlreiche weitere Objekte in crossRef-Form abgelegt, darunter etwa Verweise auf die DNS-Daten in Active Directory. Weiterhin ist es möglich, auch eigene Objekte dort abzulegen. Hintergründe über die Referenzen, die auf diese Weise in Active Directory abgelegt werden, enthät ein MSDN-Artikel: http://msdn2.microsoft.com/en-us/library/ms677913.aspx
Um die Domänen-Hierarchie des AD auszulesen, kann also auf diese crossRef-Objekte zugegriffen werden. Schwierig dabei: Ein crossRef-Objekt verweist dann auf eine AD-Domäne, wenn sein Feld "systemFlags" den Wert 3 hat. Seine Position innerhalb der Hierarchie muss dann im Vergleich zu allen anderen Domänen über die einzelnen Felder "trustParent" bestimmt werden.
Der US-MVP Robbie Allen hat in seinem "Active Directory Cookbook" ein Skript publiziert, das diese Technik nutzt und die Forest-Hierarchie ausgibt. Das Skript steht online zur Verfügung unter: http://techtasks.com/code/viewbookcode/1421
http://faq-o-matic.net/?p=620