Функция SetSecurityInfo (aclapi.h)
Функция SetSecurityInfo задает указанные сведения о безопасности в дескрипторе безопасности указанного объекта. Вызывающий объект идентифицирует объект с помощью дескриптора.
Чтобы задать saCL объекта, вызывающий объект должен иметь включенную привилегию SE_SECURITY_NAME .
Синтаксис
DWORD SetSecurityInfo(
[in] HANDLE handle,
[in] SE_OBJECT_TYPE ObjectType,
[in] SECURITY_INFORMATION SecurityInfo,
[in, optional] PSID psidOwner,
[in, optional] PSID psidGroup,
[in, optional] PACL pDacl,
[in, optional] PACL pSacl
);
Параметры
[in] handle
Дескриптор объекта , для которого необходимо задать сведения о безопасности.
[in] ObjectType
Член перечисления SE_OBJECT_TYPE , указывающий тип объекта, определяемого параметром handle .
[in] SecurityInfo
Набор битовых флагов, указывающих тип устанавливаемых сведений о безопасности. Этот параметр может быть сочетанием SECURITY_INFORMATION битовых флагов.
[in, optional] psidOwner
Указатель на идентификатор безопасности, определяющий владельца объекта. Идентификатор безопасности должен быть идентификатором безопасности, который можно назначить в качестве идентификатора безопасности владельца дескриптора безопасности. Параметр SecurityInfo должен содержать флаг OWNER_SECURITY_INFORMATION. Если идентификатор безопасности владельца не задан, этот параметр может иметь значение NULL .
[in, optional] psidGroup
Указатель на идентификатор безопасности, идентифицирующий основную группу объекта. Параметр SecurityInfo должен содержать флаг GROUP_SECURITY_INFORMATION. Если идентификатор безопасности основной группы не задан, этот параметр может иметь значение NULL .
[in, optional] pDacl
Указатель на новый DACL для объекта . Этот параметр игнорируется, если только значение параметра SecurityInfo не содержит флаг DACL_SECURITY_INFORMATION . Если значение параметра SecurityInfo содержит флаг DACL_SECURITY_INFORMATION , а для этого параметра задано значение NULL, всем пользователям предоставляется полный доступ к объекту. Сведения о списках DACCL со значениями NULL см. в разделе Создание daCL.
[in, optional] pSacl
Указатель на новый saCL для объекта . Параметр SecurityInfo должен содержать любой из следующих флагов: SACL_SECURITY_INFORMATION, LABEL_SECURITY_INFORMATION, ATTRIBUTE_SECURITY_INFORMATION, SCOPE_SECURITY_INFORMATION или BACKUP_SECURITY_INFORMATION. Если параметр SACL_SECURITY_INFORMATION или SCOPE_SECURITY_INFORMATION, вызывающий объект должен иметь разрешение SE_SECURITY_NAME. Этот параметр может иметь значение NULL , если вы не задаете saCL.
Возвращаемое значение
Если функция завершается успешно, функция возвращает ERROR_SUCCESS.
Если функция завершается сбоем, она возвращает ненулевой код ошибки, определенный в WinError.h.
Комментарии
При настройке списка управления доступом на уровне пользователей (DACL) или любых элементов в системном списке управления доступом (SACL) объекта система автоматически распространяет все наследуемые записи управления доступом (ACE) на существующие дочерние объекты в соответствии с правилами наследования ACE.
Функцию SetSecurityInfo можно использовать со следующими типами объектов:
- Локальные или удаленные файлы или каталоги в NTFS
- Именованные каналы
- Локальные или удаленные принтеры
- Локальные или удаленные службы Windows
- Сетевые общие папки
- Разделы реестра
- Семафоры, события, мьютексы и таймеры ожидания
- Процессы, потоки, задания и объекты сопоставления файлов
- Оконные станции и настольные компьютеры
- Объекты службы каталогов
Функция SetSecurityInfo не изменяет порядок ACE, разрешенных или запрещенных в доступе, в зависимости от предпочтительного порядка. При распространении наследуемых ACE на существующие дочерние объекты SetSecurityInfo помещает унаследованные ACE в порядок после всех ненаследуемых ACE в списках DACLs дочерних объектов.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | aclapi.h |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |