安全标识符

安全标识符(SID)是用于标识 受托方的唯一长度值。 每个帐户都有由颁发机构(例如 Windows 域控制器)颁发的唯一 SID,并存储在安全数据库中。 每次用户登录时,系统都会从数据库中检索该用户的 SID,并将其置于该用户的 访问令牌 中。 系统使用访问令牌中的 SID 在与 Windows 安全的所有后续交互中标识用户。 当 SID 用作用户或组的唯一标识符时,它再也不能用于标识另一个用户或组。

Windows 安全性在以下安全元素中使用 SID:

除了分配给特定用户和组的唯一创建的特定于域的 SID 之外,还有 已知 SID 用于标识泛型组和泛型用户。 例如,已知的 SID、“每个人”和“世界”标识包含所有用户的组。

大多数应用程序从不需要使用 SID。 由于 已知 SID 的名称 可能会有所不同,因此应使用函数从预定义常量生成 SID,而不是使用已知 SID 的名称。 例如,Windows作系统的美国英语版本具有一个名为“BUILTIN\Administrators”的已知 SID,该 SID 在系统的国际版本中可能具有不同的名称。 有关生成已知 SID 的示例,请参阅 在 C++的访问令牌中搜索 SID。

如果需要使用 SID,请不要直接作它们。 请改用以下函数。

功能 描述
AllocateAndInitializeSid 分配和初始化具有指定数量的子授权的 SID。
ConvertSidToStringSid 将 SID 转换为适合显示、存储或传输的字符串格式。
ConvertStringSidToSid 将字符串格式 SID 转换为有效的功能 SID。
CopySid 将源 SID 复制到缓冲区。
EqualPrefixSid 测试两个 SID 前缀值是否相等。 SID 前缀是除最后一个子授权值以外的整个 SID。
EqualSid 测试两个 SID 是否相等。 它们必须完全匹配,才能被视为相等。
FreeSid 使用 AllocateAndInitializeSid 函数释放以前分配的 SID。
GetLengthSid 检索 SID 的长度。
GetSidIdentifierAuthority 检索指向 SID 标识符颁发机构的指针。
GetSidLengthRequired 检索存储具有指定数量的子授权的 SID 所需的缓冲区大小。
GetSidSubAuthority 检索指向 SID 中指定子授权的指针。
GetSidSubAuthorityCount 检索 SID 中的子授权数。
InitializeSid 初始化 SID 结构。
IsValidSid 通过验证修订号是否在已知范围内且子授权数小于最大值来测试 SID 的有效性。
LookupAccountName 检索与指定帐户名称对应的 SID。
LookupAccountSid 检索与指定 SID 对应的帐户名称。