Функция TreeSetNamedSecurityInfoA (aclapi.h)
Эта версия этой функции не поддерживается. Поддерживается версия расширенных символов этой функции TreeSetNamedSecurityInfoW.
Синтаксис
DWORD TreeSetNamedSecurityInfoA(
[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] DWORD dwAction,
[in] FN_PROGRESS fnProgress,
[in] PROG_INVOKE_SETTING ProgressInvokeSetting,
[in, optional] PVOID Args
);
Параметры
[in] pObjectName
Указатель на строку, завершающуюся значением NULL, которая указывает имя объекта корневого узла для объектов, которые должны получать обновленные сведения о безопасности. Поддерживаемыми объектами являются разделы реестра и объекты файлов. Описание форматов строк для различных типов объектов см. в разделе 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] dwAction
Указывает поведение этой функции. Ей должно быть присвоено одно из следующих значений, определенных в AccCtrl.h.
[in] fnProgress
Указатель на функцию, используемую для отслеживания хода выполнения функции TreeSetNamedSecurityInfo . Прототипом функции хода выполнения является:
#include <windows.h>
#include <Aclapi.h>
#pragma comment(lib, "Advapi32.lib")
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, а во время операции дерева TreeSetNamedSecurityInfo передает имя последнего обработанного объекта, состояние ошибки этой операции и текущее значение 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, то ни одно из обновлений не выполняется.
Эта функция предоставляет те же функциональные возможности, что и функция SetNamedSecurityInfo , если для параметра dwAction задано значение TREE_SEC_INFO_SET, значение параметра ProgressInvokeSetting равно ProgressInvokePrePostError, а функция, на которую указывает параметр fnProgress , устанавливает значение параметра pInvokeSettingв значение ProgressInvokePrePostError.
Эта функция аналогична функции TreeResetNamedSecurityInfo :
- Если параметру dwActionобъекта TreeSetNamedSecurityInfo присвоено значение TREE_SEC_INFO_RESET_KEEP_EXPLICIT, то функция эквивалентна TreeResetNamedSecurityInfo , а параметру KeepExplicit присвоено значение TRUE.
- Если параметру dwActionобъекта TreeSetNamedSecurityInfo присвоено значение TREE_SEC_INFO_RESET, то функция эквивалентна TreeResetNamedSecurityInfo , а параметру KeepExplicit присвоено значение FALSE.
Примечание
Заголовок aclapi.h определяет TreeSetNamedSecurityInfo как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | aclapi.h |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |