共用方式為


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:兩種狀態是不同的。

另請參閱

類別概觀
安全性全域函式