Функция AddAuditAccessObjectAce (securitybaseapi.h)

Функция AddAuditAccessObjectAce добавляет запись управления доступом (ACE) системного аудита в конец списка управления доступом системы (SACL). Новый ACE может выполнять аудит доступа к объекту, набору свойств или свойству объекта. Вы также можете использовать AddAuditAccessObjectAce для добавления ACE, который может наследовать только указанный тип дочернего объекта.

Синтаксис

BOOL AddAuditAccessObjectAce(
  [in, out]      PACL  pAcl,
  [in]           DWORD dwAceRevision,
  [in]           DWORD AceFlags,
  [in]           DWORD AccessMask,
  [in, optional] GUID  *ObjectTypeGuid,
  [in, optional] GUID  *InheritedObjectTypeGuid,
  [in]           PSID  pSid,
  [in]           BOOL  bAuditSuccess,
  [in]           BOOL  bAuditFailure
);

Параметры

[in, out] pAcl

Указатель на SACL. Функция AddAuditAccessObjectAce добавляет ACE системного аудита в конец этого saCL. ACE имеет форму структуры SYSTEM_AUDIT_OBJECT_ACE .

[in] dwAceRevision

Указывает уровень редакции изменяемого списка saCL. Это значение должно быть ACL_REVISION_DS. Если уровень редакции SACL ниже ACL_REVISION_DS, функция изменяет его на ACL_REVISION_DS.

[in] AceFlags

Набор битовых флагов, управляющих наследованием ACE и типом попыток аудита доступа. Функция задает эти флаги в элементе AceFlagsACE_HEADER структуры нового ACE. Этот параметр может быть сочетанием следующих значений.

Значение Значение
CONTAINER_INHERIT_ACE
ACE наследуется объектами контейнера.
FAILED_ACCESS_ACE_FLAG
Если этот флаг задан или задано значение TRUE для параметра bAuditFailure , неудачные попытки использовать указанные права доступа приводят к тому, что система создаст запись аудита в журнале событий безопасности.
INHERIT_ONLY_ACE
ACE не применяется к объекту, которому назначен список управления доступом ( ACL), но он может быть унаследован дочерними объектами.
INHERITED_ACE
Указывает наследуемый элемент ACE. Этот флаг позволяет операциям, изменяющим безопасность в дереве объектов, изменять унаследованные ACE, при этом не изменяя ACE, которые были непосредственно применены к объекту.
NO_PROPAGATE_INHERIT_ACE
Биты OBJECT_INHERIT_ACE и CONTAINER_INHERIT_ACE не распространяются на унаследованный ACE.
OBJECT_INHERIT_ACE
ACE наследуется неконтейнерными объектами.
SUCCESSFUL_ACCESS_ACE_FLAG
Если этот флаг задан или задано значение TRUE для параметра bAuditSuccess , успешное использование указанных прав доступа приведет к тому, что система создаст запись аудита в журнале событий безопасности.

[in] AccessMask

ACCESS_MASK, указывающий права доступа, которые новый ACE проверяет для указанного идентификатора безопасности (SID).

[in, optional] ObjectTypeGuid

Указатель на структуру GUID , которая определяет тип объекта, набор свойств или свойство, защищенное новым ACE. Если этот параметр имеет значение NULL, новый ACE защищает объект, которому назначен ACL.

[in, optional] InheritedObjectTypeGuid

Указатель на структуру GUID , которая определяет тип объекта, который может наследовать новый ACE. Если этот параметр не равен NULL, наследовать ACE может только указанный тип объекта. При значении NULL любой тип дочернего объекта может наследовать ACE. В любом случае наследование также управляется значением параметра AceFlags , а также любой защитой от наследования дочерних объектов.

[in] pSid

Указатель на идентификатор безопасности, который идентифицирует пользователя, группу или сеанс входа , для которого новый ACE проверяет доступ.

[in] bAuditSuccess

Указывает, будет ли успешное использование указанных прав доступа приводить к тому, что система создаст запись аудита в журнале событий безопасности. Если этот флаг имеет значение TRUE или параметр AceFlags указывает флаг SUCCESSFUL_ACCESS_ACE_FLAG, система записывает успешные попытки доступа. в противном случае — нет.

[in] bAuditFailure

Указывает, приведет ли система к созданию записи аудита в журнале событий безопасности при неудачных попытках использования указанных прав доступа. Если этот флаг имеет значение TRUE или параметр AceFlags указывает флаг FAILED_ACCESS_ACE_FLAG, система записывает неудачные попытки доступа; в противном случае — нет.

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

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

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError. Ниже приведены возможные значения ошибок.

Код возврата Описание
ERROR_ALLOTTED_SPACE_EXCEEDED
Новый ACE не помещается в список ACL. Требуется больший буфер ACL.
ERROR_INVALID_ACL
Указанный список ACL неправильно сформирован.
ERROR_INVALID_FLAGS
Недопустимый параметр AceFlags .
ERROR_INVALID_SID
Указанный идентификатор безопасности не является структурно допустимым.
ERROR_REVISION_MISMATCH
Указанная редакция неизвестна или несовместима с редакцией ACL.
ERROR_SUCCESS
ACE успешно добавлен.

Комментарии

Если и ObjectTypeGuid , и InheritedObjectTypeGuid имеют значение NULL, используйте функцию AddAuditAccessAceEx вместо AddAuditAccessObjectAce. Это объясняется тем, что SYSTEM_AUDIT_ACE меньше и эффективнее , чем SYSTEM_AUDIT_OBJECT_ACE.

Требования

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

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

ACCESS_MASK

ACE_HEADER

ACL

AddAccessAllowedObjectAce

AddAccessDeniedObjectAce

AddAuditAccessAceEx

GUID

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

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

SYSTEM_AUDIT_ACE

SYSTEM_AUDIT_OBJECT_ACE