ConvertToAutoInheritPrivateObjectSecurity 函式 (securitybaseapi.h)

ConvertToAutoInheritPrivateObjectSecurity 函式會將安全性描述元及其訪問控制清單 (ACL) 轉換成支援自動傳播可繼承訪問控制專案的格式, (ACE) 。

語法

BOOL ConvertToAutoInheritPrivateObjectSecurity(
  [in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
  [in]           PSECURITY_DESCRIPTOR CurrentSecurityDescriptor,
  [out]          PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
  [in, optional] GUID                 *ObjectType,
  [in]           BOOLEAN              IsDirectoryObject,
  [in]           PGENERIC_MAPPING     GenericMapping
);

參數

[in, optional] ParentDescriptor

物件父容器 之安全性描述元 的指標。 如果沒有父容器,則此參數為 NULL

[in] CurrentSecurityDescriptor

物件目前安全性描述元的指標。

[out] NewSecurityDescriptor

變數的指標,可接收新配置 之自我相對安全性描述元的指標。 呼叫者必須負責呼叫 DestroyPrivateObjectSecurity 函式,以釋放此安全性描述元。

[in, optional] ObjectType

GUID 結構的指標,識別與 CurrentSecurityDescriptor 參數相關聯的物件類型。 如果對象沒有 GUID,這個參數必須是 NULL

[in] IsDirectoryObject

如果 為 TRUE,則新物件是容器,而且可以包含其他物件。 如果 為 FALSE,則新物件不是容器。

[in] GenericMapping

GENERIC_MAPPING 結構的指標,指定每個泛型許可權與物件特定許可權的對應。

傳回值

如果函式成功,函式會傳回非零。

如果函式失敗,它會傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

ConvertToAutoInheritPrivateObjectSecurity 函式會嘗試判斷任意訪問控制清單中的 ACE 是否 (DACL) 和系統訪問控制清單 (目前安全性描述元的 SACL) 繼承自父安全性描述元。 函式會將 ParentDescriptor 參數傳遞至 CreatePrivateObjectSecurityEx 函式,以取得僅包含繼承 ACE 的 ACL。 然後,它會將這些 ACE 與原始安全性描述元中的 ACE 進行比較,以判斷繼承哪些原始 ACE。 ACE 不需要比對一對一。 例如,允許讀取和寫入信任者的 ACE 相當於兩個 ACE:允許讀取存取的 ACE,以及允許寫入存取的 ACE。

原始安全性描述元中任何與繼承自父安全性描述元的 ACE 相等的 ACE,都會以INHERITED_ACE旗標標示,並新增至新的安全性描述元。 原始安全性描述元中的所有其他 ACE 都會新增至新的安全性描述元,作為非內含 ACE。

如果原始 DACL 沒有任何繼承的 ACE,函式會在新安全性描述元的控制位中設定SE_DACL_PROTECTED旗標。 同樣地,如果 SACL 中沒有任何 ACE 繼承,則會設定SE_SACL_PROTECTED旗標。

對於繼承 ACE 的 DACL,函式會將 ACE 重新排列成兩個群組。 第一個群組具有直接套用至 物件的 ACE。 第二個群組已繼承 ACE。 此順序可確保非繼承 ACE 的優先順序高於繼承的 ACE。 如需詳細資訊,請參閱 DACL 中的 ACE 順序

函式會在新安全性描述元的控制位中設定SE_DACL_AUTO_INHERITED和SE_SACL_AUTO_INHERITED旗標。

函式不會變更與 DACL 中拒絕存取 ACE 相關的存取允許 ACE 順序,因為這麼做會變更所產生安全性描述元的語意。 如果函式在變更語意的情況下無法轉換 DACL,則會讓 DACL 保持不變,並設定SE_DACL_PROTECTED旗標。

新的安全性描述項具有與原始安全性描述元相同的擁有者和主要群組。

新的安全性描述元相當於原始安全性描述元,因此呼叫端不需要任何訪問許可權或 許可權 ,才能將安全性描述元更新為新的格式。

此函式適用於 ACL_REVISION和 ACL_REVISION_DS ACL。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 securitybaseapi.h (包括 Windows.h)
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

用戶端/伺服器 存取控制

用戶端/伺服器 存取控制 函式

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GUID