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

Функция CreatePrivateObjectSecurity выделяет и инициализирует самостоятельный дескриптор безопасности для нового частного объекта. Защищенный сервер вызывает эту функцию при создании нового частного объекта.

Чтобы указать GUID типа объекта нового объекта или управлять наследованием записей управления доступом ,используйте функцию CreatePrivateObjectSecurityEx .

Синтаксис

BOOL CreatePrivateObjectSecurity(
  [in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
  [in, optional] PSECURITY_DESCRIPTOR CreatorDescriptor,
  [out]          PSECURITY_DESCRIPTOR *NewDescriptor,
  [in]           BOOL                 IsDirectoryObject,
  [in, optional] HANDLE               Token,
  [in]           PGENERIC_MAPPING     GenericMapping
);

Параметры

[in, optional] ParentDescriptor

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

[in, optional] CreatorDescriptor

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

[out] NewDescriptor

Указатель на переменную, получающую указатель на только что выделенный самостоятельный дескриптор безопасности. Вызывающий объект должен вызвать функцию DestroyPrivateObjectSecurity , чтобы освободить этот дескриптор безопасности.

[in] IsDirectoryObject

Указывает, является ли новый объект контейнером. Значение TRUE указывает, что объект содержит другие объекты, например каталог.

[in, optional] Token

Дескриптор маркера доступа для клиентского процесса , от имени которого создается объект. Если это токен олицетворения, он должен быть на уровне SecurityIdentification или выше. Полное описание уровня олицетворения SecurityIdentification см . в SECURITY_IMPERSONATION_LEVEL перечисленного типа.

Маркер клиента используется для получения сведений о безопасности по умолчанию для нового объекта, таких как его владелец по умолчанию, основная группа и список управления доступом на уровне пользователей. Маркер должен быть открыт для TOKEN_QUERY доступа.

Если выполняются все указанные ниже условия, в дополнение к TOKEN_QUERY доступу необходимо открыть дескриптор для доступа TOKEN_DUPLICATE.

  • Дескриптор маркера относится к основному маркеру.
  • Дескриптор безопасности маркера содержит одно или несколько ACE с идентификатором безопасности OwnerRights .
  • Дескриптор безопасности указывается для параметра CreatorDescriptor .
  • Вызывающий объект этой функции не устанавливает флаг SEF_AVOID_OWNER_RESTRICTION в параметре AutoInheritFlags .

[in] GenericMapping

Указатель на структуру GENERIC_MAPPING , указывающую сопоставление каждого универсального права с определенными правами для объекта.

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

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

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

Комментарии

Если системный список управления доступом (SACL) указан в SECURITY_DESCRIPTOR , заданном параметром CreatorDescriptor , для параметра Token должна быть включена SE_SECURITY_NAME привилегия. Функция CreatePrivateObjectSecurity проверяет эту привилегию и может создавать аудиты во время процесса.

Требования

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

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

Функции контроль доступа клиента и сервера

Общие сведения о клиенте и сервере контроль доступа

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

GetTokenInformation

OpenProcessToken

SECURITY_DESCRIPTOR

SECURITY_IMPERSONATION_LEVEL

SetPrivateObjectSecurity