| Предыдущий | Следующий |
| ERROR_LM_CROSS_ENCRYPTION_REQUIRED | ERROR_FILE_CORRUPT |
ERROR_NO_INHERITANCE
Запрошена обработка наследования, но ACL не содержит наследуемых компонентов
Наследование ACE зависит от флагов и типа создаваемого дочернего объекта. ACL может быть полностью допустимым, но содержать только явные ACE либо ACE, чьи флаги наследования контейнером или объектом не применимы к этому дочернему объекту. ERROR_NO_INHERITANCE описывает отсутствие наследуемого материала, а не неверный ACL, сообщаемый ERROR_BAD_INHERITANCE_ACL.
Выведите ACL в канонической диагностической форме и проверьте флаги ACE: OBJECT_INHERIT_ACE, CONTAINER_INHERIT_ACE, INHERIT_ONLY_ACE и NO_PROPAGATE_INHERIT_ACE. Также запишите, является ли дочерний объект контейнером и участвует ли объектно-специфичная информация наследования. Если ожидается распространение прав родителя, исправьте конструкцию флагов ACE. Не копируйте ACL родителя побайтно для имитации наследования: флаги унаследованных ACE и преобразование для дочернего объекта имеют определённую семантику.
Что проверить
- Проверьте флаги наследования каждого ACE родителя.
- Запишите, является ли дочерний объект контейнером.
- Используйте API наследования Windows вместо буквального копирования ACL родителя.
Ссылки
- Microsoft: автоматическое распространение наследуемых ACE
- MS-DTYP: SECURITY_DESCRIPTOR
- Microsoft: функции securitybaseapi
Нужно найти другой код? Найти другой код состояния или ошибки.