CSecurityDesc クラス

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

重要

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

構文

class CSecurityDesc

メンバー

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

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

パブリック メソッド

名前 説明
CSecurityDesc::FromString 文字列形式のセキュリティ記述子を、有効かつ機能的なセキュリティ記述子に変換します。
CSecurityDesc::GetControl セキュリティ記述子から制御情報を取得します。
CSecurityDesc::GetDacl セキュリティ記述子から随意アクセス制御リスト (DACL) 情報を取得します。
CSecurityDesc::GetGroup セキュリティ記述子からプライマリ グループ情報を取得します。
CSecurityDesc::GetOwner セキュリティ記述子から所有者情報を取得します。
CSecurityDesc::GetPSECURITY_DESCRIPTOR SECURITY_DESCRIPTOR 構造体を指すポインターを返します。
CSecurityDesc::GetSacl セキュリティ記述子からシステム アクセス制御リスト (SACL) 情報を取得します。
CSecurityDesc::IsDaclAutoInherited DACL が自動伝達をサポートするように構成されているかどうかを判断します。
CSecurityDesc::IsDaclDefaulted セキュリティ記述子が既定の DACL を使用して構成されているかどうかを判断します。
CSecurityDesc::IsDaclPresent セキュリティ記述子に DACL が含まれているかどうかを判断します。
CSecurityDesc::IsDaclProtected DACL が変更を防ぐように構成されているかどうかを判断します。
CSecurityDesc::IsGroupDefaulted セキュリティ記述子のグループ セキュリティ識別子 (SID) が既定で設定されているかどうかを判断します。
CSecurityDesc::IsOwnerDefaulted セキュリティ記述子の所有者 SID が既定で設定されているかどうかを判断します。
CSecurityDesc::IsSaclAutoInherited SACL が自動伝達をサポートするように構成されているかどうかを判断します。
CSecurityDesc::IsSaclDefaulted セキュリティ記述子が既定の SACL を使用して構成されているかどうかを判断します。
CSecurityDesc::IsSaclPresent セキュリティ記述子に SACL が含まれているかどうかを判断します。
CSecurityDesc::IsSaclProtected SACL が変更を防ぐように構成されているかどうかを判断します。
CSecurityDesc::IsSelfRelative セキュリティ記述子が自己相対形式であるかどうかを判断します。
CSecurityDesc::MakeAbsolute セキュリティ記述子を絶対形式に変換するには、このメソッドを呼び出します。
CSecurityDesc::MakeSelfRelative セキュリティ記述子を自己相対形式に変換するには、このメソッドを呼び出します。
CSecurityDesc::SetControl セキュリティ記述子の制御ビットを設定します。
CSecurityDesc::SetDacl DACL の情報を設定します。 セキュリティ記述子に DACL が既に存在する場合は置き換えられます。
CSecurityDesc::SetGroup 絶対形式のセキュリティ記述子のプライマリ グループ情報を設定します。既に存在するプライマリ グループ情報は置き換えられます。
CSecurityDesc::SetOwner 絶対形式のセキュリティ記述子の所有者情報を設定します。既に存在する所有者情報は置き換えられます。
CSecurityDesc::SetSacl SACL の情報を設定します。 セキュリティ記述子に SACL が既に存在する場合は置き換えられます。
CSecurityDesc::ToString セキュリティ記述子を文字列形式に変換します。

パブリック演算子

名前 説明
CSecurityDesc::operator const SECURITY_DESCRIPTOR * SECURITY_DESCRIPTOR 構造体を指すポインターを返します。
CSecurityDesc::operator = 代入演算子。

解説

SECURITY_DESCRIPTOR 構造体には、オブジェクトに関連付けられたセキュリティ情報が含まれています。 アプリケーションでは、この構造体を使用して、オブジェクトのセキュリティ状態の設定とクエリが行われます。 「AtlGetSecurityDescriptor」も参照してください。

アプリケーションで SECURITY_DESCRIPTOR 構造体を直接変更しないでください。代わりに、提供されているメソッドを使用してください。

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

必要条件

ヘッダー: atlsecurity.h

CSecurityDesc::CSecurityDesc

コンストラクター。

CSecurityDesc() throw();
CSecurityDesc(const CSecurityDesc& rhs) throw(... );
CSecurityDesc(const SECURITY_DESCRIPTOR& rhs) throw(...);

パラメーター

rhs
新しい CSecurityDesc オブジェクトに割り当てる CSecurityDesc オブジェクトまたは SECURITY_DESCRIPTOR 構造体。

解説

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

CSecurityDesc::~CSecurityDesc

デストラクター。

virtual ~CSecurityDesc() throw();

解説

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

CSecurityDesc::FromString

文字列形式のセキュリティ記述子を、有効かつ機能的なセキュリティ記述子に変換します。

bool FromString(LPCTSTR pstr) throw(...);

パラメーター

pstr
変換される文字列形式のセキュリティ記述子を含む null 終端文字列へのポインター。

戻り値

成功すると true を返します。 エラーになると例外をスローします。

解説

この文字列は、CSecurityDesc::ToString を使用して作成できます。 セキュリティ記述子を文字列に変換すると、格納と送信が容易になります。

このメソッドでは、ConvertStringSecurityDescriptorToSecurityDescriptor を呼び出します。

CSecurityDesc::GetControl

セキュリティ記述子から制御情報を取得します。

bool GetControl(SECURITY_DESCRIPTOR_CONTROL* psdc) const throw();

パラメーター

psdc
セキュリティ記述子の制御情報を受け取る SECURITY_DESCRIPTOR_CONTROL 構造体へのポインター。

戻り値

メソッドが成功した場合は true、失敗した場合は false を返します。

解説

このメソッドでは、GetSecurityDescriptorControl を呼び出します。

CSecurityDesc::GetDacl

セキュリティ記述子から随意アクセス制御リスト (DACL) 情報を取得します。

bool GetDacl(
    CDacl* pDacl,
    bool* pbPresent = NULL,
    bool* pbDefaulted = NULL) const throw(...);

パラメーター

pDacl
セキュリティ記述子の DACL のコピーの格納先である CDacl 構造体へのポインター。 随意 ACL が存在する場合、このメソッドによって pDacl がセキュリティ記述子の随意 ACL のアドレスに設定されます。 随意 ACL が存在しない場合、値は格納されません。

pbPresent
指定したセキュリティ記述子に随意 ACL が存在することを示す値へのポインター。 セキュリティ記述子に随意 ACL が含まれている場合、このパラメーターは true に設定されます。 セキュリティ記述子に随意 ACL が含まれていない場合、このパラメーターは false に設定されます。

pbDefaulted
セキュリティ記述子の随意 ACL が存在する場合に、SECURITY_DESCRIPTOR_CONTROL 構造体内の SE_DACL_DEFAULTED フラグの値に設定されたフラグへのポインター。 このフラグが true の場合、随意 ACL は既定のメカニズムによって取得されています。false の場合、随意 ACL はユーザーによって明示的に指定されています。

戻り値

メソッドが成功した場合は true、失敗した場合は false を返します。

CSecurityDesc::GetGroup

セキュリティ記述子からプライマリ グループ情報を取得します。

bool GetGroup(
    CSid* pSid,
    bool* pbDefaulted = NULL) const throw(...);

パラメーター

pSid
CDacl に格納されているグループのコピーを受け取る CSid (セキュリティ識別子) へのポインター。

pbDefaulted
メソッドが返された場合に、SECURITY_DESCRIPTOR_CONTROL 構造体内の SE_GROUP_DEFAULTED フラグの値に設定されたフラグへのポインター。

戻り値

メソッドが成功した場合は true、失敗した場合は false を返します。

CSecurityDesc::GetOwner

セキュリティ記述子から所有者情報を取得します。

bool GetOwner(
    CSid* pSid,
    bool* pbDefaulted = NULL) const throw(...);

パラメーター

pSid
CDacl に格納されているグループのコピーを受け取る CSid (セキュリティ識別子) へのポインター。

pbDefaulted
メソッドが返された場合に、SECURITY_DESCRIPTOR_CONTROL 構造体内の SE_OWNER_DEFAULTED フラグの値に設定されたフラグへのポインター。

戻り値

メソッドが成功した場合は true、失敗した場合は false を返します。

CSecurityDesc::GetPSECURITY_DESCRIPTOR

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

const SECURITY_DESCRIPTOR* GetPSECURITY_DESCRIPTOR() const throw();

戻り値

SECURITY_DESCRIPTOR 構造体へのポインターを返します。

CSecurityDesc::GetSacl

セキュリティ記述子からシステム アクセス制御リスト (SACL) 情報を取得します。

bool GetSacl(
    CSacl* pSacl,
    bool* pbPresent = NULL,
    bool* pbDefaulted = NULL) const throw(...);

パラメーター

pSacl
セキュリティ記述子の SACL のコピーの格納先である CSacl 構造体へのポインター。 システム ACL が存在する場合、このメソッドによって pSacl がセキュリティ記述子のシステム ACL のアドレスに設定されます。 システム ACL が存在しない場合、値は格納されません。

pbPresent
指定したセキュリティ記述子にシステム ACL が存在することを示す、メソッドによって設定されたフラグへのポインター。 セキュリティ記述子にシステム ACL が含まれている場合、このパラメーターは true に設定されます。 セキュリティ記述子にシステム ACL が含まれていない場合、このパラメーターは false に設定されます。

pbDefaulted
セキュリティ記述子のシステム ACL が存在する場合に、SECURITY_DESCRIPTOR_CONTROL 構造体内の SE_SACL_DEFAULTED フラグの値に設定されたフラグへのポインター。

戻り値

メソッドが成功した場合は true、失敗した場合は false を返します。

CSecurityDesc::IsDaclAutoInherited

随意アクセス制御リスト (DACL) が自動伝達をサポートするように構成されているかどうかを判断します。

bool IsDaclAutoInherited() const throw();

戻り値

既存の子オブジェクトへの継承可能なアクセス制御エントリ (ACE) の自動伝達をサポートするように設定された DACL がセキュリティ記述子に含まれている場合は、true を返します。 それ以外の場合は、false を返します。

解説

システムでは、オブジェクトとその既存の子オブジェクトに対して自動継承アルゴリズムを実行するときに、このビットが設定されます。

CSecurityDesc::IsDaclDefaulted

セキュリティ記述子が既定の随意アクセス制御リスト (DACL) を使用して構成されているかどうかを判断します。

bool IsDaclDefaulted() const throw();

戻り値

セキュリティ記述子に既定の DACL が含まれている場合は true、それ以外の場合は false を返します。

解説

このフラグは、アクセス制御エントリ (ACE) の継承に関して、システムで DACL を処理する方法に影響を与える可能性があります。 たとえば、オブジェクトの作成者が DACL を指定しない場合、オブジェクトは作成者のアクセス トークンから既定の DACL を受け取ります。 このフラグは、SE_DACL_PRESENT フラグが設定されていない場合はシステムで無視されます。

このフラグは、オブジェクトの最終的な DACL の計算方法を決定するために使用され、セキュリティ保護可能なオブジェクトのセキュリティ記述子の制御に物理的に格納されません。

このフラグを設定するには、CSecurityDesc::SetDacl メソッドを使用します。

CSecurityDesc::IsDaclPresent

セキュリティ記述子に随意アクセス制御リスト (DACL) が含まれているかどうかを判断します。

bool IsDaclPresent() const throw();

戻り値

セキュリティ記述子に DACL が含まれている場合は true、それ以外の場合は false を返します。

解説

このフラグが設定されていない場合、またはこのフラグが設定されていて DACL が NULL の場合、セキュリティ記述子によってすべてのユーザーにフル アクセスが許可されます。

このフラグは、セキュリティ記述子がセキュリティ保護可能なオブジェクトに関連付けられるまで、呼び出し元によって指定されたセキュリティ情報を保持するために使用されます。 セキュリティ記述子がセキュリティ保護可能なオブジェクトに関連付けられると、セキュリティ記述子制御には常に SE_DACL_PRESENT フラグが設定されます。

このフラグを設定するには、CSecurityDesc::SetDacl メソッドを使用します。

CSecurityDesc::IsDaclProtected

随意アクセス制御リスト (DACL) が変更を防ぐように構成されているかどうかを判断します。

bool IsDaclProtected() const throw();

戻り値

継承可能なアクセス制御エントリ (ACE) によってセキュリティ記述子が変更されるのを防ぐように DACL が構成されている場合は、true を返します。 それ以外の場合は、false を返します。

解説

このフラグを設定するには、CSecurityDesc::SetDacl メソッドを使用します。

このメソッドでは、継承可能な ACE の自動伝達がサポートされています。

CSecurityDesc::IsGroupDefaulted

セキュリティ記述子のグループ セキュリティ識別子 (SID) が既定で設定されているかどうかを判断します。

bool IsGroupDefaulted() const throw();

戻り値

セキュリティ記述子の元のプロバイダーではなく、既定のメカニズムによってセキュリティ記述子のグループ SID が指定されている場合は、true を返します。 それ以外の場合は、false を返します。

解説

このフラグを設定するには、CSecurityDesc::SetGroup メソッドを使用します。

CSecurityDesc::IsOwnerDefaulted

セキュリティ記述子の所有者セキュリティ識別子 (SID) が既定で設定されているかどうかを判断します。

bool IsOwnerDefaulted() const throw();

戻り値

セキュリティ記述子の元のプロバイダーではなく、既定のメカニズムによってセキュリティ記述子の所有者 SID が指定されている場合は、true を返します。 それ以外の場合は、false を返します。

解説

このフラグを設定するには、CSecurityDesc::SetOwner メソッドを使用します。

CSecurityDesc::IsSaclAutoInherited

システム アクセス制御リスト (SACL) が自動伝達をサポートするように構成されているかどうかを判断します。

bool IsSaclAutoInherited() const throw();

戻り値

既存の子オブジェクトへの継承可能なアクセス制御エントリ (ACE) の自動伝達をサポートするように設定された SACL がセキュリティ記述子に含まれている場合は、true を返します。 それ以外の場合は、false を返します。

解説

システムでは、オブジェクトとその既存の子オブジェクトに対して自動継承アルゴリズムを実行するときに、このビットが設定されます。

CSecurityDesc::IsSaclDefaulted

セキュリティ記述子が既定のシステム アクセス制御リスト (SACL) を使用して構成されているかどうかを判断します。

bool IsSaclDefaulted() const throw();

戻り値

セキュリティ記述子に既定の SACL が含まれている場合は true、それ以外の場合は false を返します。

解説

このフラグは、アクセス制御エントリ (ACE) の継承に関して、システムで SACL を処理する方法に影響を与える可能性があります。 このフラグは、SE_SACL_PRESENT フラグが設定されていない場合はシステムで無視されます。

このフラグを設定するには、CSecurityDesc::SetSacl メソッドを使用します。

CSecurityDesc::IsSaclPresent

セキュリティ記述子にシステム アクセス制御リスト (SACL) が含まれているかどうかを判断します。

bool IsSaclPresent() const throw();

戻り値

セキュリティ記述子に SACL が含まれている場合は true、それ以外の場合は false を返します。

解説

このフラグを設定するには、CSecurityDesc::SetSacl メソッドを使用します。

CSecurityDesc::IsSaclProtected

システム アクセス制御リスト (SACL) が変更を防ぐように構成されているかどうかを判断します。

bool IsSaclProtected() const throw();

戻り値

継承可能なアクセス制御エントリ (ACE) によってセキュリティ記述子が変更されるのを防ぐように SACL が構成されている場合は、true を返します。 それ以外の場合は、false を返します。

解説

このフラグを設定するには、CSecurityDesc::SetSacl メソッドを使用します。

このメソッドでは、継承可能な ACE の自動伝達がサポートされています。

CSecurityDesc::IsSelfRelative

セキュリティ記述子が自己相対形式であるかどうかを判断します。

bool IsSelfRelative() const throw();

戻り値

セキュリティ記述子が、連続するメモリ ブロック内にすべてのセキュリティ情報が含まれている自己相対形式である場合は、true を返します。 セキュリティ記述子が絶対形式の場合は、false を返します。 詳細については、「絶対および自己相対セキュリティ記述子」を参照してください。

CSecurityDesc::MakeAbsolute

セキュリティ記述子を絶対形式に変換するには、このメソッドを呼び出します。

bool MakeAbsolute() throw(...);

戻り値

メソッドが成功した場合は true、それ以外の場合は false を返します。

解説

絶対形式のセキュリティ記述子には、情報自体が含まれるのではなく、格納された情報へのポインターが含まれています。 自己相対形式のセキュリティ記述子には、連続するメモリ ブロック内に情報が含まれています。 自己相対セキュリティ記述子では、SECURITY_DESCRIPTOR 構造体が常に情報の先頭となりますが、セキュリティ記述子のその他のコンポーネントは、構造体の後に任意の順序で続くことができます。 自己相対セキュリティ記述子のコンポーネントは、メモリ アドレスを使用する代わりに、セキュリティ記述子の先頭からのオフセットによって識別されます。 この形式は、セキュリティ記述子をディスクに保存するか、通信プロトコルを使用して送信する必要がある場合に便利です。 詳細については、「絶対および自己相対セキュリティ記述子」を参照してください。

CSecurityDesc::MakeSelfRelative

セキュリティ記述子を自己相対形式に変換するには、このメソッドを呼び出します。

bool MakeSelfRelative() throw(...);

戻り値

メソッドが成功した場合は true、それ以外の場合は false を返します。

解説

絶対形式のセキュリティ記述子には、情報自体が含まれるのではなく、格納された情報へのポインターが含まれています。 自己相対形式のセキュリティ記述子には、連続するメモリ ブロック内に情報が含まれています。 自己相対セキュリティ記述子では、SECURITY_DESCRIPTOR 構造体が常に情報の先頭となりますが、セキュリティ記述子のその他のコンポーネントは、構造体の後に任意の順序で続くことができます。 このセキュリティ記述子のコンポーネントは、メモリ アドレスを使用する代わりに、セキュリティ記述子の先頭からのオフセットによって識別されます。 この形式は、セキュリティ記述子をディスクに保存するか、通信プロトコルを使用して送信する必要がある場合に便利です。 詳細については、「絶対および自己相対セキュリティ記述子」を参照してください。

CSecurityDesc::operator =

代入演算子。

CSecurityDesc& operator= (const SECURITY_DESCRIPTOR& rhs) throw(...);
CSecurityDesc& operator= (const CSecurityDesc& rhs) throw(...);

パラメーター

rhs
CSecurityDesc オブジェクトに割り当てる SECURITY_DESCRIPTOR 構造体または CSecurityDesc オブジェクト。

戻り値

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

CSecurityDesc::operator const SECURITY_DESCRIPTOR *

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

operator const SECURITY_DESCRIPTOR *() const throw();

CSecurityDesc::SetControl

セキュリティ記述子の制御ビットを設定します。

bool SetControl(
    SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
    SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet) throw();

パラメーター

ControlBitsOfInterest
設定するコントロール ビットを示すStandard EditionCURITY_DESCRIPTOR_CONTROL マスク。 設定できるフラグの一覧については、SetSecurityDescriptorControl に関するページを参照してください。

ControlBitsToSet
ControlBitsOfInterest マスクによって指定された制御ビットの新しい値を示す SECURITY_DESCRIPTOR_CONTROL マスク。 このパラメーターには、ControlBitsOfInterest パラメーターに関するページに一覧表示されているフラグの組み合わせを使用できます。

戻り値

正常に終了した場合は true を返します。失敗した場合は false を返します。

解説

このメソッドでは、SetSecurityDescriptorControl を呼び出します。

CSecurityDesc::SetDacl

随意アクセス制御リスト (DACL) の情報を設定します。 セキュリティ記述子に DACL が既に存在する場合は置き換えられます。

inline void SetDacl(
    bool bPresent = true,
    bool bDefaulted = false) throw(...);

inline void SetDacl(
    const CDacl& Dacl,
    bool bDefaulted = false) throw(...);

パラメーター

Dacl
セキュリティ記述子の DACL を指定する CDacl オブジェクトへの参照。 このパラメーターを NULL にすることはできません。 セキュリティ記述子に NULL DACL を設定するには、bPresent を false に設定して、最初の形式のメソッドを使用する必要があります。

bPresent
セキュリティ記述子に DACL が存在することを示すフラグを指定します。 このパラメーターが true の場合は、メソッドによって SECURITY_DESCRIPTOR_CONTROL 構造体に SE_DACL_PRESENT フラグが設定され、Dacl パラメーターと bDefaulted パラメーターの値が使用されます。 false の場合は、メソッドによって SE_DACL_PRESENT フラグがクリアされ、bDefaulted は無視されます。

bDefaulted
DACL のソースを示すフラグを指定します。 このフラグが true の場合、DACL は何らかの既定のメカニズムによって取得されています。 false の場合、DACL はユーザーによって明示的に指定されています。 このメソッドでは、SECURITY_DESCRIPTOR_CONTROL 構造体の SE_DACL_DEFAULTED フラグにこの値を格納します。 このパラメーターが指定されていない場合は、SE_DACL_DEFAULTED フラグがクリアされます。

戻り値

正常に終了した場合は true を返します。失敗した場合は false を返します。

解説

空の DACL と存在しない DACL には、重要な違いがあります。 DACL が空の場合は、アクセス制御エントリが含まれておらず、明示的に付与されたアクセス権はありません。 その結果、オブジェクトへのアクセスは暗黙的に拒否されます。 一方、オブジェクトに DACL がない場合は、オブジェクトに保護が割り当てられず、すべてのアクセス要求が許可されます。

CSecurityDesc::SetGroup

絶対形式のセキュリティ記述子のプライマリ グループ情報を設定します。既に存在するプライマリ グループ情報は置き換えられます。

bool SetGroup(const CSid& Sid, bool bDefaulted = false) throw(...);

パラメーター

Sid
セキュリティ記述子の新しいプライマリ グループの CSid オブジェクトへの参照。 このパラメーターを NULL にすることはできません。 セキュリティ記述子は、DACL または SACL を含まないものとしてマークできますが、グループと所有者を含む必要があります。これは、NULL の SID (特別な意味を持つ組み込み SID) である場合も同様です。

bDefaulted
プライマリ グループの情報が既定のメカニズムから派生したものかどうかを示します。 この値が true の場合は、既定の情報であり、メソッドによって SECURITY_DESCRIPTOR_CONTROL 構造体にこの値が SE_GROUP_DEFAULTED フラグとして格納されます。 このパラメーターが 0 の場合は、SE_GROUP_DEFAULTED フラグがクリアされます。

戻り値

正常に終了した場合は true を返します。失敗した場合は false を返します。

CSecurityDesc::SetOwner

絶対形式のセキュリティ記述子の所有者情報を設定します。 これにより、既に存在する所有者情報が置き換えられます。

bool SetOwner(const CSid& Sid, bool bDefaulted = false) throw(...);

パラメーター

Sid
セキュリティ記述子の新しいプライマリ所有者の CSid オブジェクト。 このパラメーターを NULL にすることはできません。

bDefaulted
所有者情報が既定のメカニズムから派生したものかどうかを示します。 この値が true の場合は、既定の情報です。 メソッドによって、SECURITY_DESCRIPTOR_CONTROL 構造体にこの値が SE_OWNER_DEFAULTED フラグとして格納されます。 このパラメーターが 0 の場合は、SE_OWNER_DEFAULTED フラグがクリアされます。

戻り値

正常に終了した場合は true を返します。失敗した場合は false を返します。

CSecurityDesc::SetSacl

システム アクセス制御リスト (SACL) の情報を設定します。 セキュリティ記述子に SACL が既に存在する場合は置き換えられます。

bool SetSacl(const CSacl& Sacl, bool bDefaulted = false) throw(...);

パラメーター

Sacl
セキュリティ記述子の SACL を指定する CSacl オブジェクトへのポインター。 このパラメーターを NULL にすることはできず、CSacl オブジェクトである必要があります。 DACL とは異なり、SACL オブジェクトではアクセス権が指定されず、監査情報のみが指定されるため、NULL の SACL と空の SACL に違いはありません。

bDefaulted
SACL のソースを示すフラグを指定します。 このフラグが true の場合、SACL は何らかの既定のメカニズムによって取得されています。 false の場合、SACL はユーザーによって明示的に指定されています。 このメソッドでは、SECURITY_DESCRIPTOR_CONTROL 構造体の SE_SACL_DEFAULTED フラグにこの値を格納します。 このパラメーターが指定されていない場合は、SE_SACL_DEFAULTED フラグがクリアされます。

戻り値

正常に終了した場合は true を返します。失敗した場合は false を返します。

CSecurityDesc::ToString

セキュリティ記述子を文字列形式に変換します。

bool ToString(
    CString* pstr, SECURITY_INFORMATION si = OWNER_SECURITY_INFORMATION |
    GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION |
    SACL_SECURITY_INFORMATION) const throw(...);

パラメーター

pstr
文字列形式のセキュリティ記述子を受け取る null 終端文字列へのポインター。

Si
出力文字列に含めるセキュリティ記述子のコンポーネントを示す SECURITY_INFORMATION ビット フラグの組み合わせを指定します。

戻り値

正常に終了した場合は true を返します。失敗した場合は false を返します。

解説

セキュリティ記述子を文字列形式にすると、より簡単に格納または転送できます。 文字列をセキュリティ記述子に変換し直すには、CSecurityDesc::FromString メソッドを使用します。

si パラメーターには、次の SECURITY_INFORMATION フラグを含めることができます。

Value 意味
OWNER_SECURITY_INFORMATION 所有者を含めます。
GROUP_SECURITY_INFORMATION プライマリ グループを含めます。
DACL_SECURITY_INFORMATION DACL を含めます。
SACL_SECURITY_INFORMATION SACL を含めます。

DACL が NULL で、入力セキュリティ記述子に SE_DACL_PRESENT 制御ビットが設定されている場合、メソッドは失敗します。

DACL が NULL で、入力セキュリティ記述子に SE_DACL_PRESENT 制御ビットが設定されていない場合、結果として得られるセキュリティ記述子の文字列には D: コンポーネントが含まれません。 詳細については、「セキュリティ記述子の文字列の形式」を参照してください。

このメソッドでは、ConvertStringSecurityDescriptorToSecurityDescriptor を呼び出します。

関連項目

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