Функция SetNamedSecurityInfoA (aclapi.h)
Функция SetNamedSecurityInfo задает указанные сведения о безопасности в дескрипторе безопасности указанного объекта. Вызывающий объект определяет объект по имени.
Синтаксис
DWORD SetNamedSecurityInfoA(
[in] LPSTR pObjectName,
[in] SE_OBJECT_TYPE ObjectType,
[in] SECURITY_INFORMATION SecurityInfo,
[in, optional] PSID psidOwner,
[in, optional] PSID psidGroup,
[in, optional] PACL pDacl,
[in, optional] PACL pSacl
);
Параметры
[in] pObjectName
Указатель на строку, завершающуюся значением NULL, которая указывает имя объекта, для которого необходимо задать сведения о безопасности. Это может быть имя локального или удаленного файла или каталога в файловой системе NTFS, общая сетевая папка, раздел реестра, семафор, событие, мьютекс, сопоставление файлов или таймер ожидания.
Описание форматов строк для различных типов объектов см. в разделе SE_OBJECT_TYPE.
[in] ObjectType
Значение перечисления SE_OBJECT_TYPE , указывающее тип объекта с именем с помощью параметра pObjectName .
[in] SecurityInfo
Набор битовых флагов, указывающих тип устанавливаемых сведений о безопасности. Этот параметр может быть сочетанием SECURITY_INFORMATION битовых флагов.
[in, optional] psidOwner
Указатель на структуру sid , которая определяет владельца объекта. Если у вызывающего объекта нет константы SeRestorePrivilege (см. раздел Константы привилегий), этот идентификатор безопасности должен содержаться в маркере вызывающего объекта и иметь разрешение SE_GROUP_OWNER . Параметр SecurityInfo должен содержать флаг OWNER_SECURITY_INFORMATION. Чтобы задать владельца, вызывающий объект должен иметь WRITE_OWNER доступ к объекту или иметь включенную привилегию SE_TAKE_OWNERSHIP_NAME. Если идентификатор безопасности владельца не задан, этот параметр может иметь значение NULL.
[in, optional] psidGroup
Указатель на идентификатор безопасности, идентифицирующий основную группу объекта. Параметр SecurityInfo должен содержать флаг GROUP_SECURITY_INFORMATION. Если идентификатор безопасности основной группы не задан, этот параметр может иметь значение NULL.
[in, optional] pDacl
Указатель на новый DACL для объекта . Параметр SecurityInfo должен содержать флаг DACL_SECURITY_INFORMATION. Вызывающий объект должен иметь WRITE_DAC доступ к объекту или быть владельцем объекта. Если вы не задаете daCL, этот параметр может иметь значение NULL.
[in, optional] pSacl
Указатель на новый 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.
Возвращаемое значение
Если функция завершается успешно, функция возвращает ERROR_SUCCESS.
Если функция завершается сбоем, она возвращает ненулевой код ошибки, определенный в WinError.h.
Комментарии
При настройке списка управления доступом на уровне пользователей (DACL) или любых элементов в системном списке управления доступом (SACL) объекта система автоматически распространяет все наследуемые записи управления доступом (ACE) на существующие дочерние объекты в соответствии с правилами наследования.
Функцию SetNamedSecurityInfo можно использовать со следующими типами объектов:
- Локальные или удаленные файлы или каталоги в NTFS
- Локальные или удаленные принтеры
- Локальные или удаленные службы Windows
- Сетевые общие папки
- Разделы реестра
- Семафоры, события, мьютексы и таймеры ожидания
- Объекты сопоставления файлов
- Объекты службы каталогов
Эта функция передает сведения в виде открытого текста. Данные, передаваемые этой функцией, подписываются, если только подписывание не было отключено для системы, но шифрование не выполняется.
При обновлении прав доступа к папке, указанной UNC-путем, например \Test\TestFolder, исходный унаследованный элемент управления доступом удаляется, а полный путь к тому не включается.
Примеры
Пример использования этой функции см. в разделе Изменение списков ACL объекта или Получение прав владения объектом.
Примечание
Заголовок aclapi.h определяет SetNamedSecurityInfo как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | aclapi.h |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |