Active Directory & .NET
От: korzey  
Дата: 20.06.05 08:24
Оценка:
Собственно сей вопрос я задавал на 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.

Ваши предложения?
Избави бог от дураков, а с врагами и сами, как-нибудь, разберемся...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.