Как средствами Windows осуществить проверку прав доступа для сущностей с различным логическим набором прав?
То есть, один тип объекта необходимо проверять исключительно на Access == True/False, другой на Read/Write/Execute/All, а вот третий Read/Listen/Look/Smell/Touch/Write/Execute/.../All
Реализуя в ISecurityInformation метод GetAccessRights можно отобразить в диалоге редактирования прав сколь угодно много стандартных и специальных прав, но реальное их сохранение и проверка завязаны на комбинации полей _GENERIC_MAPPING. И если даже наплодить этих комбинаций, то получится, что активированное специальное право активирует базовое, и соответственно вторично будут активированы все остальные специальные, подчиненные данному базовому.
Или я ошибаюсь... Пните плз в верном направлении
ЗЫ заюзалъ PrivateObjectSecurity для создания защищенного объекта, естессно, AccessCheck для проверки прав, ISecurityInformation для интерфейса раздачи прав. В общем, все как доктор Рихтер прописал.
Re: произвольный набор прав и PrivateObjectSecurity&AccessCh
Здравствуйте, anton.suherokof, Вы писали:
AS>Реализуя в ISecurityInformation метод GetAccessRights можно отобразить в диалоге редактирования прав сколь угодно много стандартных и специальных прав, но реальное их сохранение и проверка завязаны на комбинации полей _GENERIC_MAPPING. И если даже наплодить этих комбинаций, то получится, что активированное специальное право активирует базовое, и соответственно вторично будут активированы все остальные специальные, подчиненные данному базовому.
AS>Или я ошибаюсь... Пните плз в верном направлении
GENERIC_MAPPING нужен для того чтобы сопоставить базовым правам (если я не ошибся в терминологии то базовое это generic) наборы стандартных и специальных прав. Так вот насчет активирования. Логика тут такая, как только вы активируете базовое право, то активируются все специальные и стандартные по карте соответствия. Наоборот же немного по-другому, как только вы выбрали все специальные и стандартные права, соответствующие определенному базовому праву, то только тогда оно активируется.
Специальные права — это Take ownership, Read Permissions, Write Permissions, Delete
Стандартные права — это набор прав на действия которые можно совершать с данным объектом, характерных для этого объекта. То что вы написали — Read/Listen/Look/Smell/Touch...