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 |