共用方式為


CAcl 類別

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

重要

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

語法

class CAcl

成員

公用 Typedefs

名稱 描述
CAcl::CAccessMaskArray ACCESS_MASKs的陣列。
CAcl::CAceFlagArray BYTE 的陣列。
CAcl::CAceTypeArray BYTE 的陣列。

公用建構函式

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

公用方法

名稱 描述
CAcl::GetAceCount 傳回訪問控制專案 (ACE) 物件的數目。
CAcl::GetAclEntries CAcl 物件擷取存取控制清單 (ACL) 專案。
CAcl::GetAclEntry 擷取 物件中 CAcl 專案的所有資訊。
CAcl::GetLength 傳回 ACL 的長度。
CAcl::GetPACL 傳回PACL (ACL的指標)。
CAcl::IsEmpty CAcl測試物件的專案。
CAcl::IsNull 傳回 物件的狀態 CAcl
CAcl::RemoveAce 從物件中移除特定的 ACE (存取控制專案)。CAcl
CAcl::RemoveAces CAcl 套用至指定 CSid之的 中移除所有 ACE(存取控制專案)。
CAcl::SetEmpty CAcl 對象標示為空白。
CAcl::SetNull CAcl 對象標示為 NULL。

公用運算子

名稱 描述
CAcl::operator const ACL * CAcl 物件 ACL 轉換成 結構。
CAcl::operator = 指派運算子。

備註

結構 ACL 是 ACL (存取控制清單) 的標頭。 ACL 包含零個或多個 ACE 的循序列表(存取控制專案)。 ACL 中的個別 ACE 編號為 0 到 n-1,其中 n 是 ACL 中的 ACE 數目。 編輯 ACL 時,應用程式會依其索引參照 ACL 內的存取控制專案 (ACE)。

有兩種 ACL 類型:

  • 選擇性

  • 系統

任意 ACL 是由對象的擁有者或被授與WRITE_DAC物件存取權的任何人所控制。 它會指定特定使用者和群組對物件的存取權。 例如,檔案的擁有者可以使用任意 ACL 來控制哪些使用者和群組可以且無法存取檔案。

物件也可以具有與其相關聯的系統層級安全性資訊,其形式為系統管理員所控制的系統 ACL。 系統 ACL 可讓系統管理員稽核任何取得物件存取權的嘗試。

如需詳細資訊,請參閱 Windows SDK 中的 ACL 討論。

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

需求

標頭: atlsecurity.h

CAcl::CAccessMaskArray

ACCESS_MASK物件的陣列。

typedef CAtlArray<ACCESS_MASK> CAccessMaskArray;

備註

此 typedef 會指定數位型態,可用來儲存存取控制專案中使用的存取許可權(ACE)。

CAcl::CAceFlagArray

BYTE 的陣列。

typedef CAtlArray<BYTE> CAceFlagArray;

備註

此 typedef 會指定用來定義存取控制專案 (ACE) 類型特定控件旗標的數位型態。 如需可能旗標的完整清單,請參閱ACE_HEADER定義。

CAcl::CAceTypeArray

BYTE 的陣列。

typedef CAtlArray<BYTE> CAceTypeArray;

備註

此 typedef 會指定用來定義訪問控制專案 (ACE) 對象的本質的陣列類型,例如ACCESS_ALLOWED_ACE_TYPE或ACCESS_DENIED_ACE_TYPE。 如需可能類型的完整清單,請參閱ACE_HEADER定義。

CAcl::CAcl

建構函式。

CAcl() throw();
CAcl(const CAcl& rhs) throw(...);

參數

rhs
現有的 CAcl 物件。

備註

CAcl您可以使用現有的 CAcl 物件選擇性地建立物件。

CAcl::~CAcl

解構函式。

virtual ~CAcl() throw();

備註

解構函式會釋放 物件取得的任何資源。

CAcl::GetAceCount

傳回訪問控制專案 (ACE) 物件的數目。

virtual UINT GetAceCount() const throw() = 0;

傳回值

傳回物件中的 CAcl ACE 項目數。

CAcl::GetAclEntries

CAcl 物件擷取存取控制清單 (ACL) 專案。

void GetAclEntries(
    CSid::CSidArray* pSids,
    CAccessMaskArray* pAccessMasks = NULL,
    CAceTypeArray* pAceTypes = NULL,
    CAceFlagArray* pAceFlags = NULL) const throw(...);

參數

pSids
CSid 對象的陣列指標。

pAccessMasks
存取遮罩。

pAceTypes
存取控制專案 (ACE) 類型。

pAceFlags
ACE 旗標。

備註

這個方法會以物件中包含的 CAcl 每個 ACE 物件詳細數據填入數位參數。 當不需要該特定數位的詳細數據時,請使用NULL。

每個陣列的內容彼此對應,也就是說,陣列的第一 CAccessMaskArray 個項目會對應至陣列中的 CSidArray 第一個專案,依此對應。

如需 ACE 類型和旗標的詳細資訊,請參閱 ACE_HEADER

CAcl::GetAclEntry

擷取訪問控制清單中專案的所有資訊(ACL)。

void GetAclEntry(
    UINT nIndex,
    CSid* pSid,
    ACCESS_MASK* pMask = NULL,
    BYTE* pType = NULL,
    BYTE* pFlags = NULL,
    GUID* pObjectType = NULL,
    GUID* pInheritedObjectType = NULL) const throw(...);

參數

nIndex
要擷取的 ACL 專案索引。

pSid
ACL 專案套用至其中的 CSid 物件。

pMask
指定授與或拒絕存取權的遮罩。

pType
ACE 類型。

pFlags
ACE 旗標。

pObjectType
物件類型。 如果未在 ACE 中指定物件類型,或 ACE 不是 OBJECT ACE,則這會設定為GUID_NULL。

pInheritedObjectType
繼承的物件類型。 如果未在 ACE 中指定繼承的物件類型,或 ACE 不是 OBJECT ACE,這會設定為GUID_NULL。

備註

這個方法會擷取個別 ACE 的所有資訊,並提供比 單獨提供 CAcl::GetAclEntries 更多的資訊。

如需 ACE 類型和旗標的詳細資訊,請參閱 ACE_HEADER

CAcl::GetLength

傳回訪問控制清單 (ACL) 的長度。

UINT GetLength() const throw();

傳回值

傳回保存結構所需的 ACL 位元組長度。

CAcl::GetPACL

傳回訪問控制清單的指標(ACL)。

const ACL* GetPACL() const throw(...);

傳回值

傳回 結構的 ACL 指標。

CAcl::IsEmpty

CAcl測試物件的專案。

bool IsEmpty() const throw();

備註

如果 CAcl 物件不是 NULL,則傳回 TRUE,且不包含任何專案。 如果 CAcl 物件為 NULL,或包含至少一個專案,則傳回 FALSE。

CAcl::IsNull

傳回 物件的狀態 CAcl

bool IsNull() const throw();

傳回值

如果 CAcl 物件為 NULL,則傳回 TRUE,否則傳回 FALSE。

CAcl::operator const ACL *

CAcl 物件 ACL 轉換成 (存取控制清單) 結構。

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

備註

傳回 結構的位址 ACL

CAcl::operator =

指派運算子。

CAcl& operator= (const CAcl& rhs) throw(...);

參數

rhs
CAcl要指定給現有物件的 。

傳回值

傳回已更新 CAcl 對象的參考。

CAcl::RemoveAce

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

void RemoveAce(UINT nIndex) throw();

參數

nIndex
要移除的 ACE 專案索引。

備註

這個方法衍生自 CAtlArray::RemoveAt

CAcl::RemoveAces

從套用至指定 CSid之的 中移除所有 ACE(存取控制專案)。CAcl

bool RemoveAces(const CSid& rSid) throw(...)

參數

rSid
CSid 物件的參考。

CAcl::SetEmpty

CAcl 對象標示為空白。

void SetEmpty() throw();

備註

CAcl可以設定為空白或 NULL:兩種狀態是不同的。

CAcl::SetNull

CAcl 對象標示為 NULL。

void SetNull() throw();

備註

CAcl可以設定為空白或 NULL:兩種狀態是不同的。

另請參閱

類別概觀
安全性全域函式