绝对和 Self-Relative 安全描述符

安全描述符 可以采用 绝对自相对 格式。 在绝对格式中,安全描述符包含指向其信息的指针,而不是信息本身。 在相对格式中,安全描述符将 SECURITY_DESCRIPTOR 结构和关联的安全信息存储在连续内存块中。 若要确定安全描述符是自相对的还是绝对的,请调用 GetSecurityDescriptorControl 函数并检查 SECURITY_DESCRIPTOR_CONTROL 参数的SE_SELF_RELATIVE标志。 可以使用 MakeSelfRelativeSDMakeAbsoluteSD 函数在这两种格式之间进行转换。

生成安全描述符并具有指向所有组件的指针(例如,当所有者、组和自由裁量 ACL 的默认设置可用时),绝对格式非常有用。 在这种情况下,可以调用 InitializeSecurityDescriptor 函数来初始化 SECURITY_DESCRIPTOR 结构,然后调用 SetSecurityDescriptorDacl 等函数,将 ACL 和 SID 指针分配给安全描述符。

在相对格式中,安全描述符始终以 SECURITY_DESCRIPTOR 结构开头,但安全描述符的其他组件可以按任意顺序遵循该结构。 安全描述符的组件不是使用内存地址,而是通过描述符开头的偏移来标识。 当安全描述符必须存储在磁盘上、通过通信协议传输或复制到内存中时,此格式非常有用。

除了 MakeAbsoluteSD之外,返回安全描述符的所有函数都使用相对格式执行此作。 作为参数传递给函数的安全描述符可以是自相对形式或绝对形式。 有关详细信息,请参阅函数的文档。