共用方式為


CDacl 類別

這個類別是 DACL (任意存取控制清單) 結構的包裝函式。

重要

這個類別及其成員不能用於在Windows 執行階段中執行的應用程式。

語法

class CDacl : public CAcl

成員

公用建構函式

名稱 描述
CDacl::CDacl 建構函式。
CDacl::~CDacl 解構函式。

公用方法

名稱 描述
CDacl::AddAllowedAce 將允許的 ACE (存取控制專案) 新增至 CDacl 物件。
CDacl::AddDeniedAce 將拒絕的 ACE 新增至 CDacl 物件。
CDacl::GetAceCount 傳回 物件中的 CDacl ACE 數目(存取控制專案)。
CDacl::RemoveAce 從 物件中移除特定的 ACE (存取控制專案)。 CDacl
CDacl::RemoveAllAces 移除 物件中包含的 CDacl 所有 ACE。

公用運算子

名稱 描述
CDacl::operator = 指派運算子。

備註

物件的安全性描述元可以包含 DACL。 DACL 包含零個或多個 ACE(存取控制專案),可識別可存取物件的使用者和群組。 如果 DACL 是空的(也就是它包含零 ACE),則不會明確授與任何存取權,因此會隱含拒絕存取。 不過,如果物件的安全性描述元沒有 DACL,該物件會不受保護,且每個人都具有完整的存取權。

若要擷取物件的 DACL,您必須是物件的擁有者,或具有物件的READ_CONTROL存取權。 若要變更物件的 DACL,您必須具有物件的WRITE_DAC存取權。

使用提供的類別方法,從 CDacl 物件建立、新增、移除和刪除 ACE。 另 請參閱 AtlGetDacl AtlSetDacl

如需 Windows 中存取控制模型的簡介,請參閱 Windows SDK 中的存取控制

繼承階層架構

CAcl

CDacl

需求

標頭: atlsecurity.h

CDacl::AddAllowedAce

將允許的 ACE (存取控制專案) 新增至 CDacl 物件。

bool AddAllowedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags = 0) throw(...);

bool AddAllowedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags,
    const GUID* pObjectType,
    const GUID* pInheritedObjectType) throw(...);

參數

rSid
CSid 物件。

AccessMask
指定要針對指定 CSid 物件允許的存取權限遮罩。

AceFlags
一組控制 ACE 繼承的位旗標。

pObjectType
物件類型。

pInheritedObjectType
繼承的物件類型。

傳回值

如果 ACE 新增至 CDacl 物件,則傳回 TRUE,失敗時為 FALSE。

備註

CDacl物件包含零個或多個 ACE(存取控制專案),可識別可存取物件的使用者和群組。 這個方法會新增允許存取 CDacl 物件的 ACE。

如需可在 參數中 AceFlags 設定的各種旗標描述,請參閱 ACE_HEADER

CDacl::AddDeniedAce

將拒絕的 ACE (存取控制專案) 新增至 CDacl 物件。

bool AddDeniedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags = 0) throw(...);

bool AddDeniedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags,
    const GUID* pObjectType,
    const GUID* pInheritedObjectType) throw(...);

參數

rSid
CSid 物件。

AccessMask
指定要拒絕 CSid 指定物件的存取權遮罩。

AceFlags
一組控制 ACE 繼承的位旗標。 預設為方法的第一種形式為 0。

pObjectType
物件類型。

pInheritedObjectType
繼承的物件類型。

傳回值

如果 ACE 新增至 CDacl 物件,則傳回 TRUE,失敗時為 FALSE。

備註

CDacl物件包含零個或多個 ACE(存取控制專案),可識別可存取物件的使用者和群組。 這個方法會新增拒絕存取 CDacl 物件的 ACE。

如需可在 參數中 AceFlags 設定的各種旗標描述,請參閱 ACE_HEADER

CDacl::CDacl

建構函式。

CDacl (const ACL& rhs) throw(...);
CDacl () throw();

參數

rhs
現有的 ACL (存取控制清單) 結構。

備註

CDacl您可以使用現有的 ACL 結構選擇性地建立 物件。 請務必注意,只有 DACL(任意存取控制清單),而不是 SACL(系統存取控制清單),應該以此參數的形式傳遞。 在偵錯組建中,傳遞 SACL 會導致 ASSERT。 在發行組建中,傳遞 SACL 會導致 ACL 中的 ACE(存取控制專案)遭到忽略,而且不會發生任何錯誤。

CDacl::~CDacl

解構函式。

~CDacl () throw();

備註

解構函式會釋放物件取得的任何資源,包括使用 CDacl::RemoveAllAces 的所有 ACE(存取控制專案)。

CDacl::GetAceCount

傳回 物件中的 CDacl ACE 數目(存取控制專案)。

UINT GetAceCount() const throw();

傳回值

傳回 物件中包含的 CDacl ACE 數目。

CDacl::operator =

指派運算子。

CDacl& operator= (const ACL& rhs) throw(...);

參數

rhs
要指派給現有物件的 ACL (存取控制清單)。

傳回值

傳回已更新 CDacl 物件的參考。

備註

您應該確定您只將 DACL (任意存取控制清單) 傳遞至此函式。 將 SACL (系統存取控制清單) 傳遞至此函式會導致偵錯組建中的 ASSERT,但在發行組建中不會造成任何錯誤。

CDacl::RemoveAce

從 物件中移除特定的 ACE (存取控制專案)。 CDacl

void RemoveAce(UINT nIndex) throw();

參數

nIndex
要移除的 ACE 專案索引。

備註

這個方法衍生自 CAtlArray::RemoveAt

CDacl::RemoveAllAces

移除 物件中包含的 CDacl 所有 ACE(存取控制專案)。

void RemoveAllAces() throw();

備註

ACE移除 物件中的每個 CDacl (存取控制專案) 結構(如果有的話)。

另請參閱

安全性範例
CAcl 類別
Acl
A
類別概觀
安全性全域函式