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
结构,而应使用此包装类中提供的方法。 另请参阅 AtlGetOwnerSid
、AtlSetGroupSid
、AtlGetGroupSid
和 AtlSetOwnerSid
。
有关 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
,或者通过从现有的 CSid
、SID
或现有帐户复制设置,来初始化 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
不会更改对象的状态(通过调用 LookupAccountName
或 LookupAccountSid
),而只会返回当前状态。