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