Функция SetEntriesInAclA (aclapi.h)

Функция SetEntriesInAcl создает новый список управления доступом (ACL), объединяя новые сведения об управлении доступом или аудите в существующую структуру ACL .

Синтаксис

DWORD SetEntriesInAclA(
  [in]           ULONG              cCountOfExplicitEntries,
  [in, optional] PEXPLICIT_ACCESS_A pListOfExplicitEntries,
  [in, optional] PACL               OldAcl,
  [out]          PACL               *NewAcl
);

Параметры

[in] cCountOfExplicitEntries

Число EXPLICIT_ACCESS структур в массиве pListOfExplicitEntries .

[in, optional] pListOfExplicitEntries

Указатель на массив EXPLICIT_ACCESS структур, описывающих сведения об управлении доступом, которые необходимо объединить в существующий список управления доступом.

[in, optional] OldAcl

Указатель на существующий список ACL. Этот параметр может иметь значение NULL. В этом случае функция создает новый список ACL на основе записей EXPLICIT_ACCESS .

[out] NewAcl

Указатель на переменную, получающую указатель на новый список ACL. Если функция выполнена успешно, необходимо вызвать функцию LocalFree , чтобы освободить возвращенный буфер.

Возвращаемое значение

Если функция завершается успешно, функция возвращает ERROR_SUCCESS.

Если функция завершается сбоем, она возвращает ненулевой код ошибки, определенный в WinError.h.

Комментарии

Каждая запись в массиве EXPLICIT_ACCESS структур указывает сведения об управлении доступом или аудите для указанного доверенного лица. Доверенным лицом может быть пользователь, группа или другое значение идентификатора безопасности (SID), например идентификатор входа или тип входа (например, служба Windows или пакетное задание). Для идентификации доверенного лица можно использовать имя или идентификатор безопасности.

Функцию SetEntriesInAcl можно использовать для изменения списка записей управления доступом (ACE) в списке управления доступом на уровне пользователей (DACL) или системном списке управления доступом (SACL). Обратите внимание, что SetEntriesInAcl не запрещает смешивать сведения об управлении доступом и аудите в одном ACL. однако результирующий список ACL будет содержать бессмысленные записи.

Для DACL член grfAccessMode структуры EXPLICIT_ACCESS указывает, следует ли разрешать, запрещать или отзывать права доступа для доверенного лица. Этот член может указать одно из следующих значений:

  • GRANT_ACCESS
  • SET_ACCESS
  • DENY_ACCESS
  • REVOKE_ACCESS
Сведения об этих значениях см . в разделе ACCESS_MODE.

Функция SetEntriesInAcl помещает все новые ACE с запретом в доступе в начале списка ACE для нового ACL. Эта функция помещает все новые ACE, разрешенные для доступа, непосредственно перед любыми существующими ACE, разрешенными для доступа.

Для SACL член grfAccessModeструктуры EXPLICIT_ACCESS может указывать следующие значения:

  • REVOKE_ACCESS
  • SET_AUDIT_FAILURE
  • SET_AUDIT_SUCCESS
SET_AUDIT_FAILURE и SET_AUDIT_SUCCESS можно объединять. Сведения об этих значениях см . в разделе ACCESS_MODE.

Функция SetEntriesInAcl помещает все новые ACE аудита системы в начало списка ACE для нового ACL.

Примеры

Пример использования этой функции см. в разделах Изменение списков управления доступом объекта или Создание дескриптора безопасности для нового объекта или Получение владения объектом.

Примечание

Заголовок aclapi.h определяет SetEntriesInAcl в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

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

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

ACCESS_ALLOWED_ACE

ACCESS_DENIED_ACE

ACL

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

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

EXPLICIT_ACCESS

LocalFree

SYSTEM_AUDIT_ACE