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

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

Требования

   
Минимальная версия клиента 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