Функция 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 дочерних объектов.

Примечание Если общий доступ к дочерним элементам объекта недоступен, эта функция не будет распространять незащищенные ACE на дочерние элементы. Например, если каталог открыт с монопольным доступом, операционная система не будет распространять незащищенные ACE в подкаталоги или файлы этого каталога при изменении безопасности каталога.
 
Предупреждение Если предоставленный дескриптор был открыт с ACCESS_MASKзначением MAXIMUM_ALLOWED, функция SetSecurityInfo не будет распространять ACE на дочерние элементы.
 

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header aclapi.h
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

ACL

Управление доступом

Базовые функции контроль доступа

GetNamedSecurityInfo

GetSecurityInfo

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo