Поделиться через


Получение DACL объекта

Дескриптор безопасности объекта может содержать список управления доступом (DACL). DaCL содержит ноль или больше записей управления доступом (ACEs), которые определяют пользователей и группы, которые могут получить доступ к объекту. Если daCL пуст (т. е. содержит ноль ACEs), доступ явно не предоставляется, поэтому доступ неявно запрещен. Однако если дескриптор безопасности объекта не имеет DACL, объект незащищен и у всех есть полный доступ.

Чтобы получить DACL объекта, необходимо быть владельцем объекта или иметь READ_CONTROL доступ к объекту.

Чтобы получить и задать DACL объекта каталога, используйте интерфейс IADsSecurityDescriptor . С помощью C++метод IADsSecurityDescriptor::get_DiscretionaryAcl возвращает указатель IDispatch. Вызовите запросInterface на этот указатель IDispatch, чтобы получить интерфейс IADsAccessControlList и использовать методы в этом интерфейсе для доступа к отдельным acEs в DACL. Процедура изменения DACL описана в разделе "Настройка прав доступа к объекту".

Чтобы перечислить acEs, используйте метод IADsAccessControlList::get__NewEnum . Метод возвращает указатель IUnknown. Вызовите queryInterface на этот указатель IUnknown, чтобы получить интерфейс IEnumVARIANT. Используйте метод IEnumVARIANT::Next для перечисления acEs в ACL. Каждый элемент ACE возвращается как VARIANT, содержащий указатель IDispatch (элемент vt является VT_DISPATCH). Вызовите запросInterface на этот указатель IDispatch, чтобы получить интерфейс IADsAccessControlEntry для ACE. Методы интерфейса IADsAccessControlEntry можно использовать для задания или извлечения компонентов ACE.

Дополнительные сведения о DACLs и acES см. в следующих разделах в пакете средств разработки программного обеспечения платформы (SDK).