Поделиться через


Функция 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

Указатель на строку null-terminated, указывающую имя объекта корневого узла для объектов, которые должны получать обновленные сведения о безопасности. Поддерживаемые объекты — это разделы реестра и объекты файлов. Описание строковых форматов для различных типов объектов см. в 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

Указатель на структуру идентификатора безопасности , которая определяет основную группу объекта. Параметр 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 привилегии. Если этот параметр не задан, этот параметр можно NULL.

[in] KeepExplicit

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

[in, optional] fnProgress

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

#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
);

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

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

[in] ProgressInvokeSetting

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

[in, optional] Args

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

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

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

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

Замечания

Настройка null владельца, группы, DACL или SACL не поддерживается этой функцией.

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

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

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

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка aclapi.h
библиотеки Advapi32.lib
DLL Advapi32.dll