共用方式為


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

EXPLICIT_ACCESS 結構的陣列指標,描述要合併至現有 ACL 的存取控制資訊。

[in, optional] OldAcl

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

[out] NewAcl

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

傳回值

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

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

言論

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

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

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

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

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

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

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

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

例子

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

注意

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

要求

要求 價值
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
支援的最低伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平臺 窗戶
標頭 aclapi.h
連結庫 Advapi32.lib
DLL Advapi32.dll

另請參閱

ACCESS_ALLOWED_ACE

ACCESS_DENIED_ACE

ACL

訪問控制

基本訪問控制函式

EXPLICIT_ACCESS

LocalFree

SYSTEM_AUDIT_ACE