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 指定されたアカウント名とドメイン、または既存の SID 構造体で、CSid オブジェクトを更新します。
CSid::Sid ID 文字列を返します。
CSid::SidNameUse CSid オブジェクトの状態の説明を返します。

演算子

名前 説明
CSid::operator = 代入演算子。
CSid::operator const SID * CSid オブジェクトを、SID 構造体を指すポインターにキャストします。

グローバル演算子

名前 説明
operator == 2 つのセキュリティ記述子オブジェクトが等しいかどうかをテストします
operator != 2 つのセキュリティ記述子オブジェクトが等しくないかどうかをテストします
operator < 2 つのセキュリティ記述子オブジェクトの相対値を比較します。
operator > 2 つのセキュリティ記述子オブジェクトの相対値を比較します。
operator <= 2 つのセキュリティ記述子オブジェクトの相対値を比較します。
operator >= 2 つのセキュリティ記述子オブジェクトの相対値を比較します。

解説

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 が有効であることを確認します。

Note

デバッグ ビルドでは、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 関数を呼び出します。

Note

デバッグ ビルドでは、CSid オブジェクトが無効である場合、この関数により、ASSERT が生成されます。

CSid::GetSubAuthority

SID (セキュリティ識別子) 構造体の指定されたサブ認証を返します。

DWORD GetSubAuthority(DWORD nSubAuthority) const throw();

パラメーター

nSubAuthority
サブ認証。

戻り値

nSubAuthority によって参照されるサブ認証を返します。 サブ認証の値は相対識別子 (RID) です。

解説

nSubAuthority パラメーターでは、メソッドが返すサブ認証配列要素を識別するインデックス値を指定します。 メソッドは、この値に対して検証テストを実行しません。 アプリケーションでは CSid::GetSubAuthorityCount を呼び出 して、許容される値の範囲を検出できます。

Note

デバッグ ビルドでは、CSid オブジェクトが無効である場合、この関数により、ASSERT が生成されます。

CSid::GetSubAuthorityCount

サブ認証の数を返します。

UCHAR GetSubAuthorityCount() const throw();

戻り値

メソッドが成功した場合、戻り値はサブ認証の数になります。

メソッドが失敗した場合、戻り値は未定義です。 CSid オブジェクトが無効な場合、メソッドは失敗します。 拡張されたエラー情報を取得するには、GetLastError を呼び出します。

Note

デバッグ ビルドでは、CSid オブジェクトが無効である場合、この関数により、ASSERT が生成されます。

CSid::IsValid

CSid オブジェクトの有効性をテストします。

bool IsValid() const throw();

戻り値

CSid オブジェクトが有効な場合は TRUE を、そうでない場合は FALSE を返します。 このメソッドの拡張エラー情報はありません。GetLastError を呼び出さないでください。

解説

IsValid メソッドは、リビジョン番号が既知の範囲内であり、サブ認証の数が最大値より小さいと確認することで、CSid オブジェクトを検証します。

CSid::LoadAccount

指定されたアカウント名とドメイン、または既存の SID (セキュリティ識別子) 構造体で、CSid オブジェクトを更新します。

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 ==

2 つのセキュリティ記述子オブジェクトが等しいかどうかをテストします。

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

パラメーター

lhs
== 演算子の左側に表示される SID (セキュリティ識別子) または CSid

rhs
== 演算子の右側に表示される SID (セキュリティ識別子) または CSid

戻り値

セキュリティ記述子が等しい場合は TRUE、それ以外の場合は FALSE

operator !=

2 つのセキュリティ記述子オブジェクトが等しくないかどうかをテストします。

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

パラメーター

lhs
!= 演算子の左側に表示される SID (セキュリティ識別子) または CSid

rhs
!= 演算子の右側に表示される SID (セキュリティ識別子) または CSid

戻り値

セキュリティ記述子が等しくない場合は TRUE、それ以外の場合は FALSE

operator <

2 つのセキュリティ記述子オブジェクトの相対値を比較します。

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

パラメーター

lhs
< 演算子の左側に表示される SID (セキュリティ識別子) または CSid

rhs
< 演算子の右側に表示される SID (セキュリティ識別子) または CSid

戻り値

lhsrhs より小さい場合は TRUE。それ以外の場合は FALSE

operator <=

2 つのセキュリティ記述子オブジェクトの相対値を比較します。

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

パラメーター

lhs
<= 演算子の左側に表示される SID (セキュリティ識別子) または CSid

rhs
<= 演算子の右側に表示される SID (セキュリティ識別子) または CSid

戻り値

lhsrhs 以下の場合は TRUE。それ以外の場合は FALSE

operator >

2 つのセキュリティ記述子オブジェクトの相対値を比較します。

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

パラメーター

lhs
> 演算子の左側に表示される SID (セキュリティ識別子) または CSid

rhs
> 演算子の右側に表示される SID (セキュリティ識別子) または CSid

戻り値

lhsrhs より大きい場合は TRUE。それ以外の場合は FALSE

operator >=

2 つのセキュリティ記述子オブジェクトの相対値を比較します。

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

パラメーター

lhs
>= 演算子の左側に表示される SID (セキュリティ識別子) または CSid

rhs
>= 演算子の右側に表示される SID (セキュリティ識別子) または CSid

戻り値

lhsrhs 以上の場合は TRUE。それ以外の場合は FALSE

CSid::operator const SID *

SID (セキュリティ識別子) 構造体へのポインターに CSid をキャストします。

operator const SID *() const;

解説

SID 構造体のアドレスを返します。

CSid::Sid

SID (セキュリティ識別子) 構造体を文字列として返します。

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

戻り値

表示、保存、または転送に適した形式で SID 構造体を文字列として返します。 これは、ConvertSidToStringSid に相当します。

CSid::SidNameUse

CSid オブジェクトの状態の説明を返します。

SID_NAME_USE SidNameUse() const throw();

戻り値

CSid オブジェクトの状態を記述する値を格納するデータ メンバーの値を返します。

Value 説明
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 を呼び出すことで) オブジェクトの状態を変更しませんが、現在の状態のみを返します。

関連項目

セキュリティ サンプル
クラスの概要
セキュリティに関するグローバル関数
演算子