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