IAzApplication::InitializeClientContextFromStringSid 方法 (azroles.h)
InitializeClientContextFromStringSid 方法从文本形式的指定安全标识符 (SID) 获取 IAzClientContext 对象指针。
语法
HRESULT InitializeClientContextFromStringSid(
[in] BSTR SidString,
[in] LONG lOptions,
[in, optional] VARIANT varReserved,
[out] IAzClientContext **ppClientContext
);
参数
[in] SidString
一个字符串,其中包含安全主体的 SID 的文本形式。 这必须是可由 ConvertStringSidToSid 函数转换的有效字符串 SID。
[in] lOptions
用于创建上下文的选项。
如果指定了AZ_CLIENT_CONTEXT_SKIP_GROUP,则 SidString 参数中指定的 SID 不一定是有效的用户帐户。 SID 将用于在不进行验证的情况下创建上下文。 创建的上下文将标记为已从 SID 创建,SID 字符串将存储在客户端名称字段中,域名字段将为空。 创建客户端上下文时不会使用令牌组。 指定AZ_CLIENT_CONTEXT_SKIP_GROUP时,不支持轻型目录访问协议 (LDAP) 查询组。 由于帐户未在 Active Directory 中验证,因此客户端上下文的用户信息属性(如 UserSamCompat)将无效,在访问时,它们将返回ERROR_INVALID_HANDLE。 仍可使用 IAzClientContext 的 RoleForAccessCheck 属性和 AccessCheck 方法指定用于访问检查的角色。 IAzClientContext 的 GetRoles 方法仍可用于枚举分配给特定范围内的上下文的角色。
如果未指定AZ_CLIENT_CONTEXT_SKIP_GROUP,则 SID 必须表示有效的用户帐户。
[in, optional] varReserved
保留供将来使用。 此参数可能是以下值之一:
- varReserved.vt == VT_ERROR 和 varReserved.scode == DISP_E_PARAMNOTFOUND
- varReserved.vt == VT_EMPTY
- varReserved.vt == VT_NULL
- varReserved.vt == VT_I4 and varReserved.lVal == 0
- varReserved.vt == VT_I2 和 varReserved.iVal == 0
[out] ppClientContext
指向返回的 IAzClientContext 对象的指针的指针。
返回值
如果函数成功,该函数将返回S_OK。
如果函数失败,它将返回指示错误的 HRESULT 值。 有关常见错误代码的列表,请参阅 常见 HRESULT 值。
备注
如果可能,请调用 InitializeClientContextFromToken 函数而不是 InitializeClientContextFromStringSid。 InitializeClientContextFromStringSid 尝试检索客户端实际登录的登录令牌中可用的信息。 实际的登录令牌提供更多信息,例如登录类型和登录属性,并反映用于登录的身份验证包的行为。 由 InitializeClientContextFromToken 创建的客户端上下文使用登录令牌,并且生成的客户端上下文比 InitializeClientContextFromStringSid 创建的客户端上下文更完整、更准确。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | azroles.h |
Library | Azroles.lib |
DLL | Azroles.dll |
可再发行组件 | Windows XP 上的 Windows Server 2003 管理工具包 |