EqualPrefixSid 函数 (securitybaseapi.h)

EqualPrefixSid 函数测试两个安全标识符 (SID) 前缀值的相等性。 SID 前缀是整个 SID,最后一个子授权值除外。

语法

BOOL EqualPrefixSid(
  [in] PSID pSid1,
  [in] PSID pSid2
);

参数

[in] pSid1

指向要比较的第一个 SID 结构的指针。 假定此结构有效。

[in] pSid2

指向要比较的第二 个 SID 结构的指针。 假定此结构有效。

返回值

如果 SID 前缀相等,则返回值为非零值。

如果 SID 前缀不相等,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

EqualPrefixSid 函数使一个域中的服务器应用程序能够验证用户是否尝试登录到另一个域。 例如,如果用户尝试从 LocalDomain 中的工作站登录到 RemoteDomain,则 LocalDomain 的服务器可以从 RemoteDomain 请求用户的 SID 和用户的组。 RemoteDomain 的域控制器使用相关的 SID 进行响应。

指定域的所有 SID 都具有相同的前缀。 当服务器收到用户的 SID 时,服务器可以为每个 SID 调用 EqualPrefixSid 函数,将用户或组 SID 与 RemoteDomain 的 SID 进行比较。 如果任何 SID 前缀不相等,服务器将拒绝登录尝试。

建议先修改域的 SID,然后再将其与组或用户 SID 进行比较。 如果 RemoteDomain 的 SID 为 S-1-1234-8,则该域的每个组或用户 SID 的前缀为 S-1–1234–8。 若要使用 EqualPrefixSid 函数比较 SID,应用程序会复制域 SID 并将任何子授权 (RID) 值添加到副本中,从而创建 S-1-1234–8–0 形式的 SID。 然后,应用程序使用修改后的域 SID 作为模板,将组和用户 SID 进行比较。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 securitybaseapi.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

访问控制概述

基本访问控制函数

CopySid

EqualSid

IsValidSid

SID