TreeResetNamedSecurityInfoW 函式 (aclapi.h)
TreeResetNamedSecurityInfo 函式會在指定之物件的 安全性描述元 中重設指定的安全性資訊。 此函式可讓指定 任意存取控制清單 (DACL) 或任何 系統存取控制清單 (SACL) 中的任何元素在整個樹狀結構中傳播。 此函式支援回呼函式來追蹤樹狀結構作業的進度。
語法
DWORD TreeResetNamedSecurityInfoW(
[in] LPWSTR pObjectName,
[in] SE_OBJECT_TYPE ObjectType,
[in] SECURITY_INFORMATION SecurityInfo,
[in, optional] PSID pOwner,
[in, optional] PSID pGroup,
[in, optional] PACL pDacl,
[in, optional] PACL pSacl,
[in] BOOL KeepExplicit,
[in, optional] FN_PROGRESS fnProgress,
[in] PROG_INVOKE_SETTING ProgressInvokeSetting,
[in, optional] PVOID Args
);
參數
[in] pObjectName
null 的指標終止字串,指定要接收更新安全性資訊之物件的根節點物件名稱。 支援的對象是登錄機碼和檔案物件。 如需不同物件類型之字串格式的描述,請參閱 SE_OBJECT_TYPE。
[in] ObjectType
[in] SecurityInfo
一組位旗標,表示要重設的安全性信息類型。 此參數可以是 SECURITY_INFORMATION 位旗標的組合。
[in, optional] pOwner
識別物件擁有者之 SID 結構的指標。 SID 必須是可指派為安全性描述元之擁有者 SID 的 SID。 SecurityInfo 參數必須包含OWNER_SECURITY_INFORMATION旗標。 若要設定擁有者,呼叫端必須具有每個物件的WRITE_OWNER存取權,包括根物件。 如果您未設定擁有者 SID,此參數可以 NULL。
[in, optional] pGroup
識別物件主要群組之 SID 結構的指標。 SecurityInfo 參數必須包含GROUP_SECURITY_INFORMATION旗標。 若要設定群組,呼叫端必須具有每個物件的WRITE_OWNER存取權,包括根物件。 如果您未設定主要群組 SID,則可以 NULL。
[in, optional] pDacl
訪問控制清單的指標 (ACL) 結構,代表要重設之物件的新 DACL。 SecurityInfo 參數必須包含DACL_SECURITY_INFORMATION旗標。 呼叫端必須具有每個物件的READ_CONTROL和WRITE_DAC存取權,包括根物件。 如果您未設定 DACL,則可以 NULL。
[in, optional] pSacl
ACL 結構的指標,表示要重設之物件的新 SACL。 SecurityInfo 參數必須包含下列任何旗標:SACL_SECURITY_INFORMATION、LABEL_SECURITY_INFORMATION、ATTRIBUTE_SECURITY_INFORMATION、SCOPE_SECURITY_INFORMATION或BACKUP_SECURITY_INFORMATION。 如果設定SACL_SECURITY_INFORMATION或SCOPE_SECURITY_INFORMATION,呼叫端必須啟用SE_SECURITY_NAME許可權。 如果您未設定 SACL,此參數可以 NULL。
[in] KeepExplicit
布爾值,定義明確定義的 ACE 是否保留或刪除子樹狀結構。 如果 KeepExplicit為 TRUE,則會針對每個子樹 DACL 和 SACL 保留明確定義的 ACE,而繼承的 ACE 會由 繼承的 ACE 取代為 pDacl 和 pSacl。 如果 KeepExplicitFALSE,則會先刪除每個子樹 DACL 和 SACL 的明確定義 ACE,再將繼承的 ACE 取代為 pDacl 和 pSacl。
[in, optional] fnProgress
函式的指標,用來追蹤 TreeResetNamedSecurityInfo 函式的進度。 進度函式的原型如下:
#include <windows.h>
#include <Aclapi.h>
typedef VOID (*FN_PROGRESS) (
IN LPWSTR pObjectName, // Name of object just processed
IN DWORD Status, // Status of operation on object
IN OUT PPROG_INVOKE_SETTING pInvokeSetting, // When to set
IN PVOID Args, // Caller specific data
IN BOOL SecuritySet // Whether security was set
);
progress 函式會在處理節點時提供呼叫端進度和錯誤資訊。 呼叫端會在 fnProgress中指定進度函式,並在樹狀結構作業期間,TreeResetNamedSecurityInfo 傳遞最後一個處理物件的名稱、該作業的錯誤狀態,以及目前的PROG_INVOKE_SETTING值。 呼叫者可以使用 pInvokeSetting 來變更PROG_INVOKE_SETTING值。
如果未使用任何進度函式,請將此參數設定為 NULL。
[in] ProgressInvokeSetting
指定進度函式初始設定之 PROG_INVOKE_SETTING 列舉的值。
[in, optional] Args
呼叫端所指定之 progress 函式自變數的 VOID 指標。
傳回值
如果函式成功,函式會傳回ERROR_SUCCESS。
如果函式失敗,它會傳回 WinError.h 中定義的錯誤碼。
言論
此函式不支援設定 NULL 擁有者、群組、DACL 或 SACL。
如果呼叫端未包含支援所要求擁有者、群組、DACL 和 SACL 更新的適當許可權和許可權,則不會執行任何更新。
此函式類似於 TreeSetNamedSecurityInfo 函式:
- 如果 TreeResetNamedSecurityInfo 的 KeepExplicit 參數設定為 TRUE,則函式相當於 TreeSetNamedSecurityInfo,並將 dwAction 參數設定為 TREE_SEC_INFO_RESET_KEEP_EXPLICIT。
- 如果 treeResetNamedSecurityInfo
的 KeepExplicit 參數設定為FALSE ,則函式相當於TreeSetNamedSecurityInfo ,並將 dwAction 參數設定為 TREE_SEC_INFO_RESET。
注意
aclapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 TreeResetNamedSecurityInfo 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | aclapi.h |
連結庫 | Advapi32.lib |
DLL | Advapi32.dll |