(securitybaseapi.h) SetSecurityDescriptorDacl 函式

SetSecurityDescriptorDacl 函式會在 DACL) (任意存取控制清單中設定資訊。 如果安全性 描述項中已經有 DACL,則會取代 DACL。

語法

BOOL SetSecurityDescriptorDacl(
  [in, out]      PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in]           BOOL                 bDaclPresent,
  [in, optional] PACL                 pDacl,
  [in]           BOOL                 bDaclDefaulted
);

參數

[in, out] pSecurityDescriptor

函式在其中加入 DACL 之SECURITY_DESCRIPTOR 結構的指標。 這個安全性描述元必須是 絕對 格式,這表示其成員必須是其他結構的指標,而不是連續數據的位移。

[in] bDaclPresent

旗標,表示在安全性描述元中存在 DACL。 如果此參數為TRUE,函式會在SECURITY_DESCRIPTOR_CONTROL結構中設定SE_DACL_PRESENT旗標,並使用 pDacl 和 bDaclDefaulted 參數中的值。 如果此參數為 FALSE,函式會清除SE_DACL_PRESENT旗標,並忽略 pDacl 和 bDaclDefaulted

[in, optional] pDacl

ACL 結構的指標,指定安全描述元的 DACL。 如果此參數為 NULL,則會將 NULL DACL 指派給安全性描述項,以允許所有存取物件。 DACL 是由安全性描述項所參考,而不是複製到中。

[in] bDaclDefaulted

表示 DACL 來源的旗標。 如果此旗標為 TRUE,則 DACL 已由某些預設機制擷取。 如果為 FALSE,則表示 DACL 已由使用者明確指定。 函式會將此值儲存在 SECURITY_DESCRIPTOR_CONTROL結構的 SE_DACL_DEFAULTED 旗標中。 如果未指定此參數,則會清除SE_DACL_DEFAULTED旗標。

傳回值

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

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

備註

空白和不存在的 DACL 之間有一個重要差異。 當 DACL 是空的時,它不包含 (ACE) 的 存取控制專案 ;因此,不會明確授與任何訪問許可權。 因此,隱含拒絕對物件的存取。

pDacl 參數為 NULL) 時,當對象沒有 DACL (時,不會指派任何保護給物件,而且會授與所有存取要求。 為了協助維護安全性,請使用 DACL 限制存取。

bDaclPresent 旗標和 pDacl 參數的不同組態有三個可能的結果:

  • pDacl 參數指向 DACL 且 bDaclPresent 旗標為 TRUE 時,會指定 DACL,而且必須包含允許存取的 ACE,才能允許存取物件。
  • pDacl 參數未指向 DACL 且 bDaclPresent 旗標為 TRUE 時,會指定 NULL DACL。 允許所有存取。 您不應該搭配物件使用 NULL DACL,因為任何使用者可以變更安全描述元的 DACL 和擁有者。 這會干擾物件的使用。
  • pDacl 參數未指向 DACL 且 bDaclPresent 旗標為 FALSE 時,可以透過繼承或默認機制為物件提供 DACL。

範例

如需使用此函式的範例,請參閱 為New物件建立安全性描述元

規格需求

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

另請參閱

GetSecurityDescriptorDacl

InitializeSecurityDescriptor

IsValidSecurityDescriptor

低階 存取控制

低階 存取控制 函式

SECURITY_DESCRIPTOR

SECURITY_DESCRIPTOR_CONTROL

SetSecurityDescriptorGroup

SetSecurityDescriptorOwner

SetSecurityDescriptorSacl