Разница между контейнерами и листьями

Оцените статью

windows76033 Разница между контейнерами и листьямиВам, наверное, приходилось слышать слово Дерево, используемое для описания иерархической структуры, например папок на жестком диске или последовательности контейнеров в каталоге. На рис. 8.2 показана структура каталога, изображенная в виде дерева. Конечные объекты, не являющиеся контейнерами, совершенно справедливо называются Листьями, поскольку они находятся на кончиках веток дерева. В каталоге учетные записи пользователей и компьютеров считаются объектами-листьями, потому что они являются завершающими объектами в конце серии контейнеров. Контейнеры могут одновременно содержать как объекты-листья, так и другие контейнеры. Соответствующий пример показан на рис. 8.2, где основной контейнер домена содержит лист — учетную запись Administrator, а также подчиненные контейнеры. При сканировании коллекции объектов внутри контейнера может оказаться, что коллекция содержит как объекты-контейнеры, так и объекты-листья. При сканировании содержимого контейнера с помощью сценария нужно установить тип каждого входящего в контейнер объекта, как только он Рис. 8.2. Сруктура каталога часто называется деревом, а конечные объекты, которые не являются папками или контейнерами, могут быть названы листьями. (Возможно, все это лучше будет смотреться, если повернуть книгу на 90° против часовой стрелки. Не поворачивайте ее по часовой стрелке, или вместо листьев у вас получатся корни.) В документации Microsoft предписывается использование свойства Schema каждого объекта, возвращающее отображаемое моникерное имя объекта IADsClass, который описывает определение и структуру данных объекта, то есть его тип. Свойство Schema имеется у всех разновидностей ADSI-объектов, поскольку все они происходят из базового IADs-объекта и наследуют у него это свойство. Располагая именем, предоставляемым принадлежащим объекту свойством Schema, можно воспользоваться функцией GetObject для получения объекта IADsClass, у которого имеется булево свойство по имени Container, имеющее значение Тrue, если объект является контейнером, или False, если он является листом. Надеюсь, все понятно? Следующий код показывает, как Но все дело в том, что Этот код не работает. У некоторых ADS I-объектов имеются далеко не все ожидаемые свойства. Зачастую проблемы возникают из-за того, что принадлежащее схеме свойство Container не фигурирует в каждом типе объекта или, в отдельных случаях, отсутствует само свойство Schema. Так уж устроен ADSI.

Для обхода данной проблемы лучше воспользоваться более конкретным методом изучения принадлежащих объекту свойств

Комментирование закрыто.

Вверх страницы
x