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

Эта версия этой функции не поддерживается. Поддерживается версия расширенных символов этой функции TreeResetNamedSecurityInfoW.

Синтаксис

DWORD TreeResetNamedSecurityInfoA(
  [in]           LPSTR                pObjectName,
  [in]           SE_OBJECT_TYPE       ObjectType,
  [in]           SECURITY_INFORMATION SecurityInfo,
  [in, optional] PSID                 pOwner,
  [in, optional] PSID                 pGroup,
  [in, optional] PACL                 pDacl,
  [in, optional] PACL                 pSacl,
  [in]           BOOL                 KeepExplicit,
  [in, optional] FN_PROGRESS          fnProgress,
  [in]           PROG_INVOKE_SETTING  ProgressInvokeSetting,
  [in, optional] PVOID                Args
);

Параметры

[in] pObjectName

Указатель на строку, завершающуюся нулевым значением, которая указывает имя объекта корневого узла для объектов, которые должны получать обновленные сведения о безопасности. Поддерживаемые объекты — это разделы реестра и объекты файлов. Описание форматов строк для различных типов объектов см. в разделе SE_OBJECT_TYPE.

[in] ObjectType

Значение перечисления SE_OBJECT_TYPE , указывающее тип объекта с именем с помощью параметра pObjectName . Поддерживаются значения SE_REGISTRY_KEY и SE_FILE_OBJECT для разделов реестра и файлов, соответственно.

[in] SecurityInfo

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

[in, optional] pOwner

Указатель на структуру SID , которая определяет владельца объекта. Идентификатор безопасности должен быть идентификатором безопасности, который можно назначить в качестве идентификатора безопасности владельца дескриптора безопасности. Параметр SecurityInfo должен содержать флаг OWNER_SECURITY_INFORMATION. Чтобы задать владельца, вызывающий объект должен иметь WRITE_OWNER доступ к каждому объекту, включая корневой объект. Если идентификатор безопасности владельца не задан, этот параметр может иметь значение NULL.

[in, optional] pGroup

Указатель на структуру SID , идентифицирующая основную группу объекта. Параметр SecurityInfo должен содержать флаг GROUP_SECURITY_INFORMATION. Чтобы задать группу, вызывающий объект должен иметь WRITE_OWNER доступ к каждому объекту, включая корневой объект. Если вы не задаете идентификатор безопасности основной группы, этот параметр может иметь значение NULL.

[in, optional] pDacl

Указатель на структуру списка управления доступом (ACL), представляющую новый DACL для сбрасываемых объектов. Параметр SecurityInfo должен содержать флаг DACL_SECURITY_INFORMATION. Вызывающий объект должен иметь READ_CONTROL и WRITE_DAC доступ к каждому объекту, включая корневой объект. Если вы не задаете DACL, этот параметр может иметь значение NULL.

[in, optional] pSacl

Указатель на структуру ACL, представляющую новый 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 привилегия. Если вы не задаете SACL, этот параметр может иметь значение NULL.

[in] KeepExplicit

Логическое значение, определяющее, сохраняются или удаляются явно определенные ACE для вложенного дерева. Если параметр KeepExplicit имеет значение TRUE, то явно определенные ACE сохраняются для каждого поддеревого DACL и SACL, а наследуемые ACE заменяются наследуемыми ACE из pDacl и pSacl. Если параметр KeepExplicit имеет значение FALSE, то явно определенные ACE для каждого поддеревого DACL и SACL удаляются до того, как наследуемые ACE будут заменены на унаследованные ACE из pDacl и pSacl.

[in, optional] fnProgress

Указатель на функцию, используемую для отслеживания хода выполнения функции TreeResetNamedSecurityInfo . Прототип функции progress:

#include <windows.h>
#include <Aclapi.h>

typedef VOID (*FN_PROGRESS) (
  IN LPWSTR pObjectName,              // Name of object just processed
  IN DWORD Status,                    // Status of operation on object
  IN OUT PPROG_INVOKE_SETTING pInvokeSetting, // When to set
  IN PVOID Args,                      // Caller specific data
  IN BOOL SecuritySet                 // Whether security was set
);

Функция progress предоставляет вызывающей объекту сведения о ходе выполнения и об ошибке при обработке узлов. Вызывающий объект указывает функцию хода выполнения в fnProgress, а во время операции дерева TreeResetNamedSecurityInfo передает имя последнего обработанного объекта, состояние ошибки этой операции и текущее значение PROG_INVOKE_SETTING. Вызывающий объект может изменить значение PROG_INVOKE_SETTING с помощью pInvokeSetting.

Если функция хода выполнения не используется, задайте для этого параметра значение NULL.

[in] ProgressInvokeSetting

Значение перечисления PROG_INVOKE_SETTING , указывающее начальное значение для функции хода выполнения.

[in, optional] Args

Указатель на VOID для аргументов функции хода выполнения, заданных вызывающим объектом.

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

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

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

Комментарии

Эта функция не поддерживает задание владельца, группы, DACL или SACL.

Если вызывающий объект не содержит необходимых привилегий и разрешений для поддержки запрошенных обновлений владельца, группы, DACL и SACL, ни одно из обновлений не выполняется.

Эта функция аналогична функции TreeSetNamedSecurityInfo :

  • Если параметр KeepExplicitобъекта TreeResetNamedSecurityInfo имеет значение TRUE, то функция эквивалентна TreeSetNamedSecurityInfo , а параметру dwAction присвоено значение TREE_SEC_INFO_RESET_KEEP_EXPLICIT.
  • Если параметр KeepExplicitобъекта TreeResetNamedSecurityInfo имеет значение FALSE, то функция эквивалентна TreeSetNamedSecurityInfo , а параметру dwAction присвоено значение TREE_SEC_INFO_RESET.

Примечание

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

Требования

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