Собственно сей вопрос я задавал на GDN
http://www.gotdotnet.ru/Forums/Common/173185.aspx, но никакого вразумительного ответа не получил. Однако, Надежда — девка крепкая...
Cразу пресеку ненужный флейм: "Искомые" объекты НЕ "держат" интерфейсы IADs!! Посему, не стоит предлагать "привести их к IADs, и копать там"...
Есть следующий кусочек кода рекурсивно обходящий дерево(плюнем на оптимальность, не в этом сейчас дело) :
DirectoryEntry root=new DirectoryEntry("LDAP://rootDSE");
root=new DirectoryEntry("LDAP://"+ent.Properties["defaultNamingContext"][0].ToString());
NodeWalk(root);
private void NodeWalk(DirectoryEntry ent)
{
foreach(string pn in ent.Properties.PropertyNames)
{
foreach(object pv in ent.Properties[pn])
{
..... // !! Собственно, вывод свойств
}
}
foreach(DirectoryEntry child in ent.Children)
{
NodeWalk(child);
}
}
Для некоторых свойств возвращается pv.ToString()=="System.__ComObject", и pv.GUID={00000000-0000-0000-0000-000000000000}.
Зная точный тип COM-объекта можно использовать маршалинг, но основная проблема: узнать этот злосчастный тип, или хотя бы его GUID.
Ваши предложения?