Функция 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 , указывающий тип объекта, определяемого параметром дескриптора .
[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, полный доступ к объекту предоставляется всем. Дополнительные сведения о null DACLs см. в разделе "Создание 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 помещает унаследованные службы управления доступом в порядок после всех ненаследуемых ACL дочерних объектов.
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | aclapi.h |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |