SetEntriesInAclA 函式 (aclapi.h)

SetEntriesInAcl 函式會藉由將新的訪問控制或稽核控制資訊合併到現有的 ACL 結構,以 (ACL) 建立新的存取控制清單

語法

DWORD SetEntriesInAclA(
  [in]           ULONG              cCountOfExplicitEntries,
  [in, optional] PEXPLICIT_ACCESS_A pListOfExplicitEntries,
  [in, optional] PACL               OldAcl,
  [out]          PACL               *NewAcl
);

參數

[in] cCountOfExplicitEntries

pListOfExplicitEntries 陣列中的EXPLICIT_ACCESS結構數目。

[in, optional] pListOfExplicitEntries

描述要合併至現有 ACL 之訪問控制資訊的 EXPLICIT_ACCESS 結構數位指標。

[in, optional] OldAcl

現有 ACL 的指標。 此參數可以是 NULL,在此情況下,函式會根據 EXPLICIT_ACCESS 專案建立新的 ACL。

[out] NewAcl

接收新 ACL 指標之變數的指標。 如果函式成功,您必須呼叫 LocalFree 函式以釋放傳回的緩衝區。

傳回值

如果函式成功,函式會傳回ERROR_SUCCESS。

如果函式失敗,它會傳回 WinError.h 中定義的非零錯誤碼。

備註

EXPLICIT_ACCESS 結構陣列中的每個項目都會指定指定信任項的訪問控制或稽核控制資訊。 信任者可以是使用者、群組或其他 安全性標識符 (SID) 值,例如 登入標識碼 或登入類型 (例如 Windows 服務或批次作業) 。 您可以使用名稱或 SID 來識別信任者。

您可以使用 SetEntriesInAcl 函式,在 (DACL ) (或 SACL) 的任意存取控制清單中修改存取控制專案清單 (ACL) 清單。 請注意, SetEntriesInAcl 不會防止您在相同的 ACL 中混合存取控制和稽核控制資訊;不過,產生的 ACL 將包含無意義的專案。

對於 DACL,EXPLICIT_ACCESS 結構的 grfAccessMode 成員會指定是否允許、拒絕或撤銷信任者的訪問許可權。 這個成員可以指定下列其中一個值:

  • GRANT_ACCESS
  • SET_ACCESS
  • DENY_ACCESS
  • REVOKE_ACCESS
如需這些值的相關信息,請參閱 ACCESS_MODE

SetEntriesInAcl 函式會將任何新的拒絕存取 ACL 的 ACE 放在新 ACL 清單的開頭。 此函式會在任何現有的存取允許 ACE 之前放置任何新的存取允許 ACE。

針對 SACL,EXPLICIT_ACCESS 結構的 grfAccessMode 成員可以指定下列值:

  • REVOKE_ACCESS
  • SET_AUDIT_FAILURE
  • SET_AUDIT_SUCCESS
可以合併SET_AUDIT_FAILURE和SET_AUDIT_SUCCESS。 如需這些值的相關信息,請參閱 ACCESS_MODE

SetEntriesInAcl 函式會將任何新的系統稽核 ACE 放在新 ACL 的 ACL 清單開頭。

範例

如需使用此函式的範例,請參閱 修改物件的 ACL建立新物件的安全性描述元取得對象擁有權

注意

aclapi.h 標頭會將 SetEntriesInAcl 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

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

另請參閱

ACCESS_ALLOWED_ACE

ACCESS_DENIED_ACE

ACL

存取控制

基本 存取控制 函式

EXPLICIT_ACCESS

LocalFree

SYSTEM_AUDIT_ACE