Condividi tramite


Funzione TreeSetNamedSecurityInfoW (aclapi.h)

La funzione TreeSetNamedSecurityInfo imposta le informazioni di sicurezza specificate nel descrittore di sicurezza di un albero di oggetti specificato. Questa funzione consente la propagazione di un elenco di controllo di accesso discrezionale (DACL) o di qualsiasi elemento nell'elenco di controllo di accesso di sistema (SACL) in un intero albero. Questa funzione supporta una funzione di callback per tenere traccia dello stato di avanzamento dell'operazione di albero.

Sintassi

DWORD TreeSetNamedSecurityInfoW(
  [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]           DWORD                dwAction,
  [in]           FN_PROGRESS          fnProgress,
  [in]           PROG_INVOKE_SETTING  ProgressInvokeSetting,
  [in, optional] PVOID                Args
);

Parametri

[in] pObjectName

Puntatore a un nullstringa con terminazione che specifica il nome dell'oggetto nodo radice per gli oggetti che devono ricevere informazioni di sicurezza aggiornate. Gli oggetti supportati sono chiavi del Registro di sistema e oggetti file. Per le descrizioni dei formati stringa per i diversi tipi di oggetto, vedere SE_OBJECT_TYPE.

[in] ObjectType

Valore dell'enumerazione SE_OBJECT_TYPE che indica il tipo di oggetto denominato dal parametro pObjectName. I valori supportati sono rispettivamente SE_REGISTRY_KEY e SE_FILE_OBJECT, per le chiavi del Registro di sistema e gli oggetti file.

[in] SecurityInfo

Set di flag di bit che indicano il tipo di informazioni di sicurezza da impostare. Questo parametro può essere una combinazione dei flag di bit SECURITY_INFORMATION.

[in, optional] pOwner

Puntatore a una struttura SID che identifica il proprietario dell'oggetto. Il SID deve essere uno che può essere assegnato come SID proprietario di un descrittore di sicurezza. Il parametro SecurityInfo deve includere il flag di OWNER_SECURITY_INFORMATION. Per impostare il proprietario, il chiamante deve avere WRITE_OWNER accesso a ogni oggetto, incluso l'oggetto radice. Se non si imposta il SID proprietario, questo parametro può essere NULL.

[in, optional] pGroup

Puntatore a una struttura SID che identifica il gruppo primario dell'oggetto. Il parametro SecurityInfo deve includere il flag di GROUP_SECURITY_INFORMATION. Per impostare il gruppo, il chiamante deve avere WRITE_OWNER accesso a ogni oggetto, incluso l'oggetto radice. Se non si imposta il SID del gruppo primario, questo parametro può essere NULL.

[in, optional] pDacl

Puntatore a una struttura elenco di controllo di accesso (ACL) che rappresenta il nuovo DACL per gli oggetti da reimpostare. Il parametro SecurityInfo deve includere il flag di DACL_SECURITY_INFORMATION. Il chiamante deve avere READ_CONTROL e WRITE_DAC l'accesso a ogni oggetto, incluso l'oggetto radice. Se non si imposta il DACL, questo parametro può essere NULL.

[in, optional] pSacl

Puntatore a una struttura ACL che rappresenta il nuovo sacl per gli oggetti da reimpostare. Il parametro SecurityInfo deve includere uno dei flag seguenti: SACL_SECURITY_INFORMATION, LABEL_SECURITY_INFORMATION, ATTRIBUTE_SECURITY_INFORMATION, SCOPE_SECURITY_INFORMATION o BACKUP_SECURITY_INFORMATION. Se si imposta SACL_SECURITY_INFORMATION o SCOPE_SECURITY_INFORMATION, il chiamante deve avere il privilegio di SE_SECURITY_NAME abilitato. Se non si imposta SACL, questo parametro può essere NULL.

[in] dwAction

Specifica il comportamento di questa funzione. Deve essere impostato su uno dei valori seguenti, definiti in AccCtrl.h.

Valore Significato
TREE_SEC_INFO_SET
0x00000001
Le informazioni di sicurezza vengono impostate sull'oggetto specificato dal parametro pObjectName e dall'albero degli oggetti figlio di tale oggetto. Se gli elenchi di controllo di accesso vengono specificati nei parametri pDacl o pSacl, i descrittori di sicurezza sono associati all'oggetto . I descrittori di sicurezza vengono propagati all'albero degli oggetti figlio in base alle relative proprietà di ereditarietà.
TREE_SEC_INFO_RESET
0x00000002
Le informazioni di sicurezza vengono reimpostate sull'oggetto specificato dal parametro pObjectName e dall'albero degli oggetti figlio di tale oggetto. Tutte le informazioni di sicurezza esistenti vengono rimosse da tutti gli oggetti nell'albero.

Se un oggetto nell'albero non concede le autorizzazioni appropriate al chiamante per modificare il descrittore di sicurezza nell'oggetto, la propagazione delle informazioni di sicurezza in quel particolare nodo dell'albero e dei relativi oggetti viene ignorata. L'operazione continua sul resto dell'albero sotto l'oggetto specificato dal parametro pObjectName.

TREE_SEC_INFO_RESET_KEEP_EXPLICIT
0x00000003
Le informazioni di sicurezza vengono reimpostate sull'oggetto specificato dal parametro pObjectName e dall'albero degli oggetti figlio di tale oggetto. Tutte le informazioni di sicurezza ereditate esistenti vengono rimosse da tutti gli oggetti nell'albero. Le informazioni di sicurezza impostate in modo esplicito sugli oggetti nell'albero non vengono modificate.

Se un oggetto nell'albero non concede le autorizzazioni appropriate al chiamante per modificare il descrittore di sicurezza nell'oggetto, la propagazione delle informazioni di sicurezza in quel particolare nodo dell'albero e dei relativi oggetti viene ignorata. L'operazione continua sul resto dell'albero sotto l'oggetto specificato dal parametro pObjectName.

[in] fnProgress

Puntatore alla funzione usata per tenere traccia dello stato di avanzamento della funzione TreeSetNamedSecurityInfo. Il prototipo della funzione di stato è:

#include <windows.h>
#include <Aclapi.h>
#pragma comment(lib, "Advapi32.lib")

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
);

La funzione di stato fornisce al chiamante informazioni sullo stato di avanzamento e sull'errore durante l'elaborazione dei nodi. Il chiamante specifica la funzione di stato in fnProgresse durante l'operazione ad albero, TreeSetNamedSecurityInfo passa il nome dell'ultimo oggetto elaborato, lo stato di errore di tale operazione e il valore PROG_INVOKE_SETTING corrente. Il chiamante può modificare il valore di PROG_INVOKE_SETTING usando pInvokeSetting.

Se non viene usata alcuna funzione di stato, impostare questo parametro su NULL.

[in] ProgressInvokeSetting

Valore dell'enumerazione PROG_INVOKE_SETTING che specifica l'impostazione iniziale per la funzione di stato.

[in, optional] Args

Puntatore a un VOID per gli argomenti della funzione di stato specificati dal chiamante.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce ERROR_SUCCESS.

Se la funzione ha esito negativo, restituisce un codice di errore definito in WinError.h.

Osservazioni

L'impostazione di un NULL proprietario, gruppo, DACL o SACL non è supportata da questa funzione.

Se il chiamante non contiene i privilegi e le autorizzazioni appropriate per supportare gli aggiornamenti di proprietario, gruppo, DACL e SACL richiesti, non viene eseguito alcun aggiornamento.

Questa funzione fornisce la stessa funzionalità della funzione SetNamedSecurityInfo quando il valore del parametro dwAction è impostato su TREE_SEC_INFO_SET, il valore del parametro ProgressInvokeSetting è impostato su ProgressInvokePrePostErrore la funzione a cui punta il parametro fnProgress imposta il valore del parametro pInvokeSetting su ProgressInvokePrePostError.

Questa funzione è simile alla funzione TreeResetNamedSecurityInfo:

  • Se il parametro dwAction di TreeSetNamedSecurityInfo è impostato su TREE_SEC_INFO_RESET_KEEP_EXPLICIT, la funzione equivale a TreeResetNamedSecurityInfo con il parametro KeepExplicit impostato su TRUE.
  • Se il parametro dwAction di TreeSetNamedSecurityInfo è impostato su TREE_SEC_INFO_RESET, la funzione equivale a TreeResetNamedSecurityInfo con il parametro KeepExplicit impostato su FALSE.

Nota

L'intestazione aclapi.h definisce TreeSetNamedSecurityInfo come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows Vista [solo app desktop]
server minimo supportato Windows Server 2008 [solo app desktop]
piattaforma di destinazione Finestre
intestazione aclapi.h
libreria Advapi32.lib
dll Advapi32.dll