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:兩種狀態是不同的。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應