Функция 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
Функция SetEntriesInAcl помещает все новые ACE с запретом в доступе в начале списка ACE для нового ACL. Эта функция помещает все новые ACE, разрешенные для доступа, непосредственно перед любыми существующими ACE, разрешенными для доступа.
Для SACL член grfAccessModeструктуры EXPLICIT_ACCESS может указывать следующие значения:
- REVOKE_ACCESS
- SET_AUDIT_FAILURE
- SET_AUDIT_SUCCESS
Функция 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 |