专用对象的安全描述符
若要创建 安全描述符,受保护的服务器可以使用应用程序用来为安全对象创建安全描述符的相同过程。 有关示例代码,请参阅 为 C++中的新对象创建安全描述符。 或者,受保护的服务器应用程序可以调用 BuildSecurityDescriptor 函数来执行此作。 如果向 BuildSecurityDescriptor提供指向现有 自相关安全描述符 的指针,它将使用从该安全描述符中获取的信息生成新的安全描述符,并将其与在函数调用中作为参数传递的新访问控制信息合并。 所有者和组由传递给函数结构受托人(可选)指定。 BuildSecurityDescriptor 创建的安全描述符采用 自相对 格式。
此外,Windows API 还提供一组函数,用于将客户端安全信息与继承自父对象的安全描述符或默认安全描述符继承的信息合并。 CreatePrivateObjectSecurity、GetPrivateObjectSecurity、SetPrivateObjectSecurity和 DestroyPrivateObjectSecurity 函数提供从 访问令牌检索默认信息、支持继承和作安全描述符的特定部分的能力。 当客户端在安全对象的层次结构中创建专用对象时,这非常有用。 例如,可以使用 CreatePrivateObjectSecurity 函数创建一个安全描述符,其中包含由客户端指定的 ACE、从父对象继承的 ACE,以及创建客户端的访问令牌中的默认所有者。 虽然 BuildSecurityDescriptor 从传入函数调用的访问控制信息或从现有安全描述符创建安全描述符,CreatePrivateObjectSecurity 仅从现有安全描述符中的信息创建安全描述符。
LookupSecurityDescriptorParts 函数从现有 自相关安全描述符获取安全描述符信息。 此信息包括所有者和组规范、SACL 或 DACL 中的 ACE 数以及 SACL 或 DACL 中的 ACE 列表。