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 中的 存取控制。
繼承階層架構
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
(存取控制項目) 結構(如果有的話)。