CSid

此类是 SID(安全标识符)结构的包装器。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

class CSid;

成员

公共 typedef

名称 描述
CSid::CSidArray 一个 CSid 对象数组。

公共构造函数

名称 描述
CSid::CSid 构造函数。
CSid::~CSid 析构函数。

公共方法

名称 描述
CSid::AccountName 返回与 CSid 对象关联的帐户名称。
CSid::Domain 返回与 CSid 对象关联的域名。
CSid::EqualPrefix 测试 SID(安全标识符)前缀是否相等。
CSid::GetLength 返回 CSid 对象的长度。
CSid::GetPSID 返回指向 SID 结构的指针。
CSid::GetPSID_IDENTIFIER_AUTHORITY 返回指向 SID_IDENTIFIER_AUTHORITY 结构的指针。
CSid::GetSubAuthority 返回 SID 结构中的指定子授权。
CSid::GetSubAuthorityCount 返回子授权计数。
CSid::IsValid 测试 CSid 对象的有效性。
CSid::LoadAccount 在给定帐户名称和域的情况下更新 CSid 对象,或更新现有的 SID 结构。
CSid::Sid 返回 ID 字符串。
CSid::SidNameUse 返回 CSid 对象的状态说明。

运算符

名称 描述
CSid::operator = 赋值运算符。
CSid::operator const SID * CSid 对象强制转换为指向 SID 结构的指针。

全局运算符

名称 描述
operator == 测试两个安全描述符对象是否相等
operator != 测试两个安全描述符对象是否不相等
operator < 比较两个安全描述符对象的相对值。
operator > 比较两个安全描述符对象的相对值。
operator <= 比较两个安全描述符对象的相对值。
operator >= 比较两个安全描述符对象的相对值。

备注

SID 结构是用于唯一标识用户或组的可变长度结构。

应用程序不应直接修改 SID 结构,而应使用此包装类中提供的方法。 另请参阅 AtlGetOwnerSidAtlSetGroupSidAtlGetGroupSidAtlSetOwnerSid

有关 Windows 中访问控制模型的简介,请参阅 Windows SDK 中的访问控制

要求

标头: atlsecurity.h

CSid::AccountName

返回与 CSid 对象关联的帐户名称。

LPCTSTR AccountName() const throw(...);

返回值

返回指向帐户名称的 LPCTSTR

注解

此方法尝试查找指定的 SID(安全标识符)的名称。 有关完整详细信息,请参阅 LookupAccountSid

如果找不到 SID 的帐户名称,则 AccountName 返回空字符串。 如果网络超时阻止此方法查找名称,则可能会出现这种结果。 没有相应帐户名称的安全标识符(例如用于标识登录会话的 SID)也会出现这种情况。

CSid::CSid

构造函数。

CSid() throw();
CSid(const SID& rhs) throw(...);
CSid(const CSid& rhs) throw(...);

CSid(
    const SID_IDENTIFIER_AUTHORITY& IdentifierAuthority,
    BYTE nSubAuthorityCount,
    ...) throw(...);

explicit CSid(
    LPCTSTR pszAccountName,
    LPCTSTR pszSystem = NULL) throw(...);

explicit CSid(
    const SID* pSid,
    LPCTSTR pszSystem = NULL) throw(...);

参数

rhs
现有的 CSid 对象或 SID(安全标识符)结构。

IdentifierAuthority
授权。

nSubAuthorityCount
子授权计数。

pszAccountName
帐户名称。

pszSystem
系统名称。 此字符串可以是远程计算机的名称。 如果此字符串为 NULL,则使用本地系统。

pSid
指向 SID 结构的指针。

备注

构造函数通过将内部数据成员设置为 SidTypeInvalid,或者通过从现有的 CSidSID 或现有帐户复制设置,来初始化 CSid 对象。

如果初始化失败,则构造函数将引发 CAtlException

CSid::~CSid

析构函数。

virtual ~CSid() throw();

备注

析构函数释放对象获取的所有资源。

CSid::CSidArray

一个 CSid 对象数组。

typedef CAtlArray<CSid> CSidArray;

备注

此 typedef 指定可用于从 ACL(访问控制列表)中检索安全标识符的数组类型。 请参阅 CAcl::GetAclEntries

CSid::Domain

返回与 CSid 对象关联的域名。

LPCTSTR Domain() const throw(...);

返回值

返回指向域的 LPCTSTR

注解

此方法尝试查找指定的 SID(安全标识符)的名称。 有关完整详细信息,请参阅 LookupAccountSid

如果找不到 SID 的帐户名称,则 Domain 将以空字符串的形式返回域。 如果网络超时阻止此方法查找名称,则可能会出现这种结果。 没有相应帐户名称的安全标识符(例如用于标识登录会话的 SID)也会出现这种情况。

CSid::EqualPrefix

测试 SID(安全标识符)前缀是否相等。

bool EqualPrefix(const SID& rhs) const throw();
bool EqualPrefix(const CSid& rhs) const throw();

参数

rhs
要比较的 SID(安全标识符)结构或 CSid 对象。

返回值

成功时返回 TRUE,失败时返回 FALSE

注解

有关详细信息,请参阅 EqualPrefixSid

CSid::GetLength

返回 CSid 对象的长度。

UINT GetLength() const throw();

返回值

返回 CSid 对象的长度(以字节为单位)。

注解

如果 CSid 结构无效,则返回值是未定义的。 在调用 GetLength 之前,请使用 CSid::IsValid 成员函数来验证 CSid 是否有效。

注意

在调试版本下,如果 CSid 对象无效,则该函数将导致 ASSERT。

CSid::GetPSID

返回指向 SID(安全标识符)结构的指针。

const SID* GetPSID() const throw(...);

返回值

返回 CSid 对象的基础 SID 结构的地址。

CSid::GetPSID_IDENTIFIER_AUTHORITY

返回指向 SID_IDENTIFIER_AUTHORITY 结构的指针。

const SID_IDENTIFIER_AUTHORITY* GetPSID_IDENTIFIER_AUTHORITY() const throw();

返回值

如果该方法成功,则返回 SID_IDENTIFIER_AUTHORITY 结构的地址。 如果失败,则返回值是未定义的。 如果 CSid 对象无效(在这种情况下,CSid::IsValid 方法返回 FALSE),则可能会发生失败。 可以调用函数 GetLastError 来获取扩展的错误信息。

注意

在调试版本下,如果 CSid 对象无效,则该函数将导致 ASSERT。

CSid::GetSubAuthority

返回 SID(安全标识符)结构中的指定子授权。

DWORD GetSubAuthority(DWORD nSubAuthority) const throw();

参数

nSubAuthority
子授权。

返回值

返回 nSubAuthority 引用的子授权。 子授权值是一个相对标识符 (RID)。

注解

nSubAuthority 参数指定一个索引值,用于标识该方法将返回的子授权数组元素。 该方法不会对此值执行验证测试。 应用程序可以调用 CSid::GetSubAuthorityCount 来发现可接受值的范围。

注意

在调试版本下,如果 CSid 对象无效,则该函数将导致 ASSERT。

CSid::GetSubAuthorityCount

返回子授权计数。

UCHAR GetSubAuthorityCount() const throw();

返回值

如果该方法成功,则返回值为子授权计数。

如果该方法失败,则返回值是未定义的。 如果 CSid 对象无效,则该方法会失败。 若要获得扩展的错误信息,请调用 GetLastError

注意

在调试版本下,如果 CSid 对象无效,则该函数将导致 ASSERT。

CSid::IsValid

测试 CSid 对象的有效性。

bool IsValid() const throw();

返回值

如果 CSid 对象有效,则返回 TRUE,否则返回 FALSE。 此方法没有扩展的错误信息;请不要调用 GetLastError

备注

IsValid 方法通过验证修订号是否在已知范围内,以及子授权的数量是否小于最大值,来验证 CSid 对象。

CSid::LoadAccount

在给定帐户名称和域的情况下更新 CSid 对象,或更新现有的 SID(安全标识符)结构。

bool LoadAccount(
    LPCTSTR pszAccountName,
    LPCTSTR pszSystem = NULL) throw(...);

bool LoadAccount(
    const SID* pSid,
    LPCTSTR pszSystem = NULL) throw(...);

参数

pszAccountName
帐户名称。

pszSystem
系统名称。 此字符串可以是远程计算机的名称。 如果此字符串为 NULL,则使用本地系统。

pSid
指向 SID 结构的指针。

返回值

成功时返回 TRUE,失败时返回 FALSE。 若要获得扩展的错误信息,请调用 GetLastError

备注

LoadAccount 尝试查找指定的名称的安全标识符。 有关详细信息,请参阅 LookupAccountSid

CSid::operator =

赋值运算符。

CSid& operator= (const CSid& rhs) throw(...);
CSid& operator= (const SID& rhs) throw(...);

参数

rhs
要分配到 CSid 对象的 SID(安全标识符)或 CSid

返回值

返回对更新的 CSid 对象的引用。

operator ==

测试两个安全描述符对象是否相等。

bool operator==(
    const CSid& lhs,
    const CSid& rhs) throw();

参数

lhs
出现在 == 运算符左侧的 SID(安全标识符)或 CSid

rhs
出现在 == 运算符右侧的 SID(安全标识符)或 CSid

返回值

如果安全描述符相等,则返回 TRUE,否则返回 FALSE

operator !=

测试两个安全描述符对象是否不相等。

bool operator!=(
    const CSid& lhs,
    const CSid& rhs) throw();

参数

lhs
出现在 != 运算符左侧的 SID(安全标识符)或 CSid

rhs
出现在 != 运算符右侧的 SID(安全标识符)或 CSid

返回值

如果安全描述符不相等,则返回 TRUE,否则返回 FALSE

operator <

比较两个安全描述符对象的相对值。

bool operator<(
    const CSid& lhs,
    const CSid& rhs) throw();

参数

lhs
出现在 < 运算符左侧的 SID(安全标识符)或 CSid

rhs
出现在 < 运算符右侧的 SID(安全标识符)或 CSid

返回值

如果 lhs 小于 rhs,则返回 TRUE,否则返回 FALSE

operator <=

比较两个安全描述符对象的相对值。

bool operator<=(
    const CSid& lhs,
    const CSid& rhs) throw();

参数

lhs
出现在 <= 运算符左侧的 SID(安全标识符)或 CSid

rhs
出现在 <= 运算符右侧的 SID(安全标识符)或 CSid

返回值

如果 lhs 小于等于 rhs,则返回 TRUE,否则返回 FALSE

operator >

比较两个安全描述符对象的相对值。

bool operator>(
    const CSid& lhs,
    const CSid& rhs) throw();

参数

lhs
出现在 > 运算符左侧的 SID(安全标识符)或 CSid

rhs
出现在 > 运算符右侧的 SID(安全标识符)或 CSid

返回值

如果 TRUE 大于 lhs,则返回 rhs,否则返回 FALSE

operator >=

比较两个安全描述符对象的相对值。

bool operator>=(
    const CSid& lhs,
    const CSid& rhs) throw());

参数

lhs
出现在 >= 运算符左侧的 SID(安全标识符)或 CSid

rhs
出现在 >= 运算符右侧的 SID(安全标识符)或 CSid

返回值

如果 lhs 大于等于 rhs,则返回 TRUE,否则返回 FALSE

CSid::operator const SID *

CSid 对象强制转换为指向 SID(安全标识符)结构的指针。

operator const SID *() const;

备注

返回 SID 结构的地址。

CSid::Sid

以字符串形式返回 SID(安全标识符)结构。

LPCTSTR Sid() const throw(...);

返回值

以适合显示、存储或传输的格式将 SID 结构作为字符串返回。 等效于 ConvertSidToStringSid

CSid::SidNameUse

返回 CSid 对象的状态说明。

SID_NAME_USE SidNameUse() const throw();

返回值

返回数据成员的值,该成员存储一个描述 CSid 对象状态的值。

说明
SidTypeUser 指示用户 SID(安全标识符)。
SidTypeGroup 指示组 SID
SidTypeDomain 指示域 SID
SidTypeAlias 指示别名 SID
SidTypeWellKnownGroup 指示已知组的 SID
SidTypeDeletedAccount 指示已删除的帐户的 SID
SidTypeInvalid 指示无效的 SID
SidTypeUnknown 指示未知的 SID 类型。
SidTypeComputer 指示计算机的 SID

备注

在调用 SidNameUse 之前调用 CSid::LoadAccount 来更新 CSid 对象,以返回其状态。 SidNameUse 不会更改对象的状态(通过调用 LookupAccountNameLookupAccountSid),而只会返回当前状态。

另请参阅

安全示例
类概述
安全全局函数
运算符