CreatePrivateObjectSecurity 函数 (securitybaseapi.h)

CreatePrivateObjectSecurity 函数为新的私有对象分配和初始化自相对安全描述符。 受保护的服务器在创建新的私有对象时调用此函数。

若要指定新对象的对象类型 GUID 或控制如何继承 访问控制项 (ACE) ,请使用 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 访问。

如果以下所有条件都为 true,则除了 TOKEN_QUERY 访问外,还必须打开句柄以 TOKEN_DUPLICATE 访问。

  • 令牌句柄是指主令牌。
  • 令牌的安全描述符包含一个或多个具有 OwnerRights SID 的 ACE。
  • CreatorDescriptor 参数指定安全描述符。
  • 此函数的调用方不会在 AutoInheritFlags 参数中设置SEF_AVOID_OWNER_RESTRICTION标志。

[in] GenericMapping

指向 GENERIC_MAPPING 结构的指针,该结构指定从每个泛型权限到对象特定权限的映射。

返回值

如果函数成功,该函数将返回非零值。

如果函数失败,则返回零。 要获得更多的错误信息,请调用 GetLastError。

注解

如果在 CreatorDescriptor 参数指定的SECURITY_DESCRIPTOR中指定了 SACL) (系统访问控制列表则 Token 参数必须启用SE_SECURITY_NAME特权。 CreatePrivateObjectSecurity 函数会检查此权限,并可能在过程中生成审核。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 securitybaseapi.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

客户端/服务器访问控制函数

客户端/服务器访问控制概述

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

GetTokenInformation

OpenProcessToken

SECURITY_DESCRIPTOR

SECURITY_IMPERSONATION_LEVEL

SetPrivateObjectSecurity