CTokenPrivileges クラス

このクラスは、TOKEN_PRIVILEGES 構造体用のラッパーです。

重要

このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。

構文

class CTokenPrivileges

メンバー

パブリック コンストラクター

名前 説明
CTokenPrivileges::CTokenPrivileges コンストラクター。
CTokenPrivileges::~CTokenPrivileges デストラクター。

パブリック メソッド

名前 説明
CTokenPrivileges::Add CTokenPrivileges オブジェクトに 1 つ以上の特権を追加します。
CTokenPrivileges::Delete CTokenPrivileges オブジェクトから特権を削除します。
CTokenPrivileges::DeleteAll CTokenPrivileges オブジェクトからすべての特権を削除します。
CTokenPrivileges::GetCount CTokenPrivileges オブジェクト内の特権エントリの数を返します。
CTokenPrivileges::GetDisplayNames CTokenPrivileges オブジェクトに含まれる特権の表示名を取得します。
CTokenPrivileges::GetLength CTokenPrivileges オブジェクトによって表される TOKEN_PRIVILEGES 構造体を保持するために必要なバッファー サイズ (バイト単位) を返します。
CTokenPrivileges::GetLuidsAndAttributes CTokenPrivileges オブジェクトからローカルで一意な識別子 (LUID) と属性フラグを取得します。
CTokenPrivileges::GetNamesAndAttributes CTokenPrivileges オブジェクトから特権名と属性フラグを取得します。
CTokenPrivileges::GetPTOKEN_PRIVILEGES TOKEN_PRIVILEGES 構造体を指すポインターを返します。
CTokenPrivileges::LookupPrivilege 指定された特権名に関連付けられた属性を取得します。

パブリック演算子

名前 説明
CTokenPrivileges::operator const TOKEN_PRIVILEGES * TOKEN_PRIVILEGES 構造体を指すポインターに値をキャストします。
CTokenPrivileges::operator = 代入演算子。

解説

アクセス トークンは、プロセスまたはスレッドのセキュリティ コンテキストを記述するオブジェクトであり、Windows システムにログオンしている各ユーザーに割り当てられます。

アクセス トークンは、各ユーザーに付与されるさまざまなセキュリティ特権を記述するために使用されます。 特権は、ローカルで一意な識別子 (LUID) と呼ばれる 64 ビットの数値と記述子文字列で構成されます。

CTokenPrivileges クラスは、TOKEN_PRIVILEGES 構造体用のラッパーであり、0 個以上の特権が含まれます。 特権は、指定されたクラス メソッドを使用して追加、削除、または照会することができます。

Windows のアクセス制御モデルの概要については、Windows SDK のアクセス制御に関するページをご覧ください。

必要条件

ヘッダー: atlsecurity.h

CTokenPrivileges::Add

CTokenPrivileges アクセス トークン オブジェクトに 1 つ以上の特権を追加します。

bool Add(LPCTSTR pszPrivilege, bool bEnable) throw(...);
void Add(const TOKEN_PRIVILEGES& rPrivileges) throw(...);

パラメーター

pszPrivilege
WINNT.H ヘッダーファイルで定義された、権限の名前を指定し、null で終わる文字列を指すポインター。

bEnable
true の場合、特権は有効です。 false の場合、特権は無効です。

rPrivileges
TOKEN_PRIVILEGES 構造体への参照。 特権と属性はこの構造体からコピーされ、CTokenPrivileges オブジェクトに追加されます。

戻り値

このメソッドの最初の形式により、特権が正常に追加された場合は true、それ以外の場合は false が返されます。

CTokenPrivileges::CTokenPrivileges

コンストラクター。

CTokenPrivileges() throw();
CTokenPrivileges(const CTokenPrivileges& rhs) throw(... );
CTokenPrivileges(const TOKEN_PRIVILEGES& rPrivileges) throw(...);

パラメーター

rhs
新しいオブジェクトに割り当てる CTokenPrivileges オブジェクト。

rPrivileges
新しい CTokenPrivileges オブジェクトに割り当てる TOKEN_PRIVILEGES 構造体。

解説

CTokenPrivileges オブジェクトは、必要に応じて、TOKEN_PRIVILEGES 構造体または以前に定義した CTokenPrivileges オブジェクトを使用して作成できます。

CTokenPrivileges::~CTokenPrivileges

デストラクター。

virtual ~CTokenPrivileges() throw();

解説

デストラクターによって、割り当てられたすべてのリソースが解放されます。

CTokenPrivileges::Delete

CTokenPrivileges アクセス トークン オブジェクトから特権を削除します。

bool Delete(LPCTSTR pszPrivilege) throw();

パラメーター

pszPrivilege
WINNT.H ヘッダーファイルで定義された、権限の名前を指定し、null で終わる文字列を指すポインター。 たとえば、このパラメーターを使用すると、定数 SE_SECURITY_NAME、またはそれに対応する文字列 "SeSecurityPrivilege" を指定できます。

戻り値

特権が正常に削除された場合は true を、それ以外の場合は false を返します。

解説

このメソッドは、制限付きトークンを作成するためのツールとして役立ちます。

CTokenPrivileges::DeleteAll

CTokenPrivileges アクセス トークン オブジェクトからすべての特権を削除します。

void DeleteAll() throw();

解説

CTokenPrivileges アクセス トークン オブジェクトに含まれるすべての特権を削除します。

CTokenPrivileges::GetDisplayNames

CTokenPrivileges アクセス トークン オブジェクトに含まれる特権の表示名を取得します。

void GetDisplayNames(CNames* pDisplayNames) const throw(...);

パラメーター

pDisplayNames
CString オブジェクトの配列へのポインター。 CNames は、typedef (CTokenPrivileges::CAtlArray<CString>) として定義されます。

解説

パラメーター pDisplayNames は、CTokenPrivileges オブジェクトに含まれる特権に対応する表示名を受け取る CString オブジェクトの配列を指すポインターです。 このメソッドでは、WINNT.H の Defined Privileges セクションで指定された特権の表示名のみが取得されます。

このメソッドにより、表示名が取得されます。たとえば、属性名が SE_REMOTE_SHUTDOWN_NAME である場合、表示名は、"Force shutdown from a remote system" (リモート システムからの強制シャットダウン) になります。システム名を取得するには、CTokenPrivileges::GetNamesAndAttributes を使用します。

CTokenPrivileges::GetCount

CTokenPrivileges オブジェクト内の特権エントリの数を返します。

UINT GetCount() const throw();

戻り値

CTokenPrivileges オブジェクトに含まれる特権の数を返します。

CTokenPrivileges::GetLength

CTokenPrivileges オブジェクトの長さを返します。

UINT GetLength() const throw();

戻り値

含まれているすべての特権エントリなど、CTokenPrivileges オブジェクトによって表される TOKEN_PRIVILEGES 構造体を保持するために必要なバイト数を返します。

CTokenPrivileges::GetLuidsAndAttributes

CTokenPrivileges オブジェクトからローカルで一意な識別子 (LUID) と属性フラグを取得します。

void GetLuidsAndAttributes(
    CLUIDArray* pPrivileges,
    CAttributes* pAttributes = NULL) const throw(...);

パラメーター

pPrivileges
LUID オブジェクトの配列を指すポインター。 CLUIDArray は、CAtlArray<LUID> CLUIDArray として定義される typedef です。

pAttributes
DWORD オブジェクトの配列を指すポインター。 このパラメーターを省略した場合、または NULL とした場合、属性は取得されません。 CAttributes は、CAtlArray <DWORD> CAttributes として定義される typedef です。

解説

このメソッドにより、CTokenPrivileges アクセス トークン オブジェクトに含まれるすべての特権が列挙され、個々の LUID と (必要に応じて) 属性フラグが配列オブジェクトに配置されます。

CTokenPrivileges::GetNamesAndAttributes

CTokenPrivileges オブジェクトから名前と属性フラグを取得します。

void GetNamesAndAttributes(
    CNames* pNames,
    CAttributes* pAttributes = NULL) const throw(...);

パラメーター

pNames
CString オブジェクトの配列を指すポインター。 CNames は、CAtlArray <CString> CNames として定義される typedef です。

pAttributes
DWORD オブジェクトの配列を指すポインター。 このパラメーターを省略した場合、または NULL とした場合、属性は取得されません。 CAttributes は、CAtlArray <DWORD> CAttributes として定義される typedef です。

解説

このメソッドにより、CTokenPrivileges オブジェクトに含まれるすべての特権が列挙され、名前と (必要に応じて) 属性フラグが配列オブジェクトに配置されます。

このメソッドでは、表示可能な名前ではなく属性名が取得されます。たとえば、属性名が SE_REMOTE_SHUTDOWN_NAME である場合、システム名は "SeRemoteShutdownPrivilege" になります。表示可能な名前を取得するには、メソッド CTokenPrivileges::GetDisplayNames を使用します。

CTokenPrivileges::GetPTOKEN_PRIVILEGES

TOKEN_PRIVILEGES 構造体を指すポインターを返します。

const TOKEN_PRIVILEGES* GetPTOKEN_PRIVILEGES() const throw(...);

戻り値

TOKEN_PRIVILEGES 構造体を指すポインターを返します。

CTokenPrivileges::LookupPrivilege

指定された特権名に関連付けられた属性を取得します。

bool LookupPrivilege(
    LPCTSTR pszPrivilege,
    DWORD* pdwAttributes = NULL) const throw(...);

パラメーター

pszPrivilege
WINNT.H ヘッダーファイルで定義された、権限の名前を指定し、null で終わる文字列を指すポインター。 たとえば、このパラメーターを使用すると、定数 SE_SECURITY_NAME、またはそれに対応する文字列 "SeSecurityPrivilege" を指定できます。

pdwAttributes
属性を受け取る変数を指すポインター。

戻り値

属性が正常に取得された場合は true、それ以外の場合は false を返します。

CTokenPrivileges::operator =

代入演算子。

CTokenPrivileges& operator= (const TOKEN_PRIVILEGES& rPrivileges) throw(...);
CTokenPrivileges& operator= (const CTokenPrivileges& rhs) throw(...);

パラメーター

rPrivileges
CTokenPrivileges に割り当てる TOKEN_PRIVILEGES 構造体。

rhs
オブジェクトに割り当てる CTokenPrivileges オブジェクト。

戻り値

更新された CTokenPrivileges オブジェクトを返します。

CTokenPrivileges::operator const TOKEN_PRIVILEGES *

TOKEN_PRIVILEGES 構造体を指すポインターに値をキャストします。

operator const TOKEN_PRIVILEGES *() const throw(...);

解説

TOKEN_PRIVILEGES 構造体を指すポインターに値をキャストします。

関連項目

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