Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью ADSI можно создать дескриптор безопасности и установить его как свойство nTSecurityDescriptor для нового объекта или использовать его для замены дескриптора безопасности существующего объекта nTSecurityDescriptor.
Чтобы создать дескриптор безопасности для объекта:
- Используйте CoCreateInstance для создания com-объекта ADSI для нового дескриптора безопасности и получения указателя интерфейса IADsSecurityDescriptor на этот объект. Помните, что идентификатор класса CLSID_SecurityDescriptor.
- Используйте метод IADsSecurityDescriptor::put_Owner, чтобы задать владельца объекта. Доверенное лицо является пользователем, группой или другим субъектом безопасности. Приложение должно использовать значение из соответствующего свойства объекта пользователя или группы, связанного с доверенным лицом, к которому применяется ACE.
- Используйте метод IADsSecurityDescriptor::put_Control для управления тем, наследуют ли списки DACL и SACL объектом от родительского контейнера.
- Используйте CoCreateInstance для создания COM-объекта ADSI для DACL нового дескриптора безопасности и получения указателя интерфейса IADsAccessControlList на этот объект. Учтите, что идентификатор класса CLSID_AccessControlList.
- Для каждого ACE, добавляемого в DACL, используйте CoCreateInstance для создания COM-объекта ADSI для нового ACE и чтобы получить указатель интерфейса IADsAccessControlEntry на этот объект. Помните, что идентификатор класса является CLSID_AccessControlEntry.
- Для каждого ACE, добавляемого в DACL, задайте свойства ACE с помощью методов свойств объекта IADsAccessControlEntry. Более подробную информацию о настройке свойств на ACE см. в установке прав доступа на объект.
- Для каждого ACE, добавляемого в DACL, используйте метод QueryInterface в объекте IADsAccessControlEntry, чтобы получить указатель IDispatch. Для метода IADsAccessControlList::AddAce требуется указатель интерфейса IDispatch на ACE.
- Для каждого ACE, добавляемого в DACL, используйте IADsAccessControlList::AddAce, чтобы добавить новый ACE в DACL. Будьте внимательны, что порядок ACE в ACL может повлиять на оценку доступа к объекту. Для правильного доступа к объекту может потребоваться создать новый ACL, добавить ACE из существующего ACL в правильном порядке в новый ACL, а затем заменить существующий ACL в дескрипторе безопасности новым ACL. Дополнительные сведения см. в порядке управления правами доступа вDACL.
- Выполните действия 4-8, чтобы создать SACL для нового дескриптора безопасности.
- Используйте метод IADsSecurityDescriptor::put_DiscretionaryAcl для установки DACL. Дополнительные сведения о DACLs см. в разделе списки DACLs null и пустые списки DACLs.
- Используйте метод IADsSecurityDescriptor::put_SystemAcl для задания SACL.
- Преобразуйте объект IADsSecurityDescriptor в VARIANT, используя метод QueryInterface объекта IADsSecurityDescriptor, чтобы получить интерфейс IDispatch. Затем установите член структуры VARIANT в VT_DISPATCH и установите член pdispVal структуры VARIANT равным указателю IDispatch.
- Получите указатель интерфейса IADs для объекта.
- Используйте метод IADs::Put с nTSecurityDescriptor и VARIANT, созданного выше, для записи нового дескриптора безопасности в кэш свойств.
- Используйте метод IADs::SetInfo для обновления свойства объекта в каталоге.