Funzione SetSecurityInfo (aclapi.h)

La funzione SetSecurityInfo imposta le informazioni di sicurezza specificate nel descrittore di sicurezza di un oggetto specificato. Il chiamante identifica l'oggetto da un handle.

Per impostare l'elenco SACL di un oggetto, il chiamante deve avere il privilegio SE_SECURITY_NAME abilitato.

Sintassi

DWORD SetSecurityInfo(
  [in]           HANDLE               handle,
  [in]           SE_OBJECT_TYPE       ObjectType,
  [in]           SECURITY_INFORMATION SecurityInfo,
  [in, optional] PSID                 psidOwner,
  [in, optional] PSID                 psidGroup,
  [in, optional] PACL                 pDacl,
  [in, optional] PACL                 pSacl
);

Parametri

[in] handle

Handle per l'oggetto per il quale impostare le informazioni di sicurezza.

[in] ObjectType

Membro dell'enumerazione SE_OBJECT_TYPE che indica il tipo di oggetto identificato dal parametro handle .

[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] psidOwner

Puntatore a un SID che identifica il proprietario dell'oggetto. Il SID deve essere assegnato come SID proprietario di un descrittore di sicurezza. Il parametro SecurityInfo deve includere il flag OWNER_SECURITY_INFORMATION. Questo parametro può essere NULL se non si imposta il SID proprietario.

[in, optional] psidGroup

Puntatore a un SID che identifica il gruppo primario dell'oggetto. Il parametro SecurityInfo deve includere il flag GROUP_SECURITY_INFORMATION. Questo parametro può essere NULL se non si imposta il SID del gruppo primario.

[in, optional] pDacl

Puntatore al nuovo DACL per l'oggetto . Questo parametro viene ignorato a meno che il valore del parametro SecurityInfo non includa il flag DACL_SECURITY_INFORMATION . Se il valore del parametro SecurityInfo include il flag DACL_SECURITY_INFORMATION e il valore di questo parametro è impostato su NULL, l'accesso completo all'oggetto viene concesso a tutti. Per informazioni sui DACL Null , vedere Creazione di un DACL.

[in, optional] pSacl

Puntatore al nuovo sacl per l'oggetto . 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. Questo parametro può essere NULL se non si imposta SACL.

Valore restituito

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

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

Commenti

Se si imposta l'elenco di controllo di accesso discrezionale (DACL) o qualsiasi elemento nell'elenco di controllo di accesso di sistema (SACL) di un oggetto, il sistema propaga automaticamente tutte le voci di controllo di accesso ereditabili agli oggetti figlio esistenti, in base alle regole di ereditarietà ACE.

È possibile usare la funzione SetSecurityInfo con i tipi di oggetti seguenti:

  • File o directory locali o remoti in un ntfs
  • Named Pipes
  • Stampanti locali o remote
  • Servizi Windows locali o remoti
  • Condivisioni di rete
  • Chiavi del Registro di sistema
  • Semafori, eventi, mutex e timer waitable
  • Processi, thread, processi e oggetti di mapping dei file
  • Stazioni finestre e desktop
  • Oggetti del servizio directory

La funzione SetSecurityInfo non riordina gli ACL consentiti o negati dall'accesso in base all'ordine preferito. Quando si propagano ACL ereditabili a oggetti figlio esistenti, SetSecurityInfo inserisce gli ACL ereditati in ordine dopo tutti gli ACL nonriti negli elenchi DACL degli oggetti figlio.

Nota Se l'accesso condiviso agli elementi figlio dell'oggetto non è disponibile, questa funzione non propaga gli ACL non protetti agli elementi figlio. Ad esempio, se una directory viene aperta con accesso esclusivo, il sistema operativo non propaga gli ACL non protetti alle sottodirectory o ai file di tale directory quando viene modificata la sicurezza nella directory.
 
Avviso Se l'handle fornito è stato aperto con un valore ACCESS_MASK di MAXIMUM_ALLOWED, la funzione SetSecurityInfo non propaga gli ACL agli elementi figlio.
 

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione aclapi.h
Libreria Advapi32.lib
DLL Advapi32.dll

Vedi anche

ACL

Controllo dell’accesso

Funzioni Controllo di accesso di base

GetNamedSecurityInfo

GetSecurityInfo

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo