Condividi tramite


Creazione o modifica di un ACL

Windows supporta un set di funzioni che creano un elenco di controllo di accesso (ACL) o modificano le voci di controllo di accesso (ACL) in un ACL esistente.

La funzionesetEntriesInAclcrea un nuovo ACL. SetEntriesInAcl può specificare un set completamente nuovo di ACL oppure unire uno o più nuovi ACL con gli ACL esistenti. La funzione SetEntriesInAcl usa una matrice di strutture EXPLICIT_ACCESS per specificare le informazioni per i nuovi ACL. Ogni struttura EXPLICIT_ACCESS contiene informazioni che descrivono un singolo ACE. Queste informazioni includono i diritti di accesso, il tipo di ACE, i flag che controllano l'ereditarietà ACE e una strutturaTRUSTEEche identifica il trustee.

Aggiungere un nuovo ACE a un ACL esistente

  1. Usare la funzione di GetSecurityInfo o GetNamedSecurityInfo per ottenere l'oggetto DACL o SACL esistente dal descrittore di sicurezza di un oggetto.
  2. Per ogni nuovo ACE, chiamare la funzione BuildExplicitAccessWithName per riempire una struttura EXPLICIT_ACCESS con le informazioni che descrivono l'ACE.
  3. Chiamare SetEntriesInAcl, specificando l'ACL esistente e una matrice di strutture EXPLICIT_ACCESS per i nuovi ACL. La funzione SetEntriesInAcl alloca e inizializza l'ACL e le relative ACEs.
  4. Chiamare la funzioneSetSecurityInfoo SetNamedSecurityInfo per collegare il nuovo ACL al descrittore di sicurezza dell'oggetto.

Se il chiamante specifica un ACL esistente, SetEntriesInAcl unisce le nuove informazioni ACE con gli ACL esistenti nell'ACL. Si consideri il caso, ad esempio, in cui l'ACL esistente concede l'accesso a un trustee specificato e una struttura EXPLICIT_ACCESS nega l'accesso allo stesso trustee. In questo caso, SetEntriesInAcl aggiunge una nuova ACE di negazione dell'accesso per il trustee ed elimina o modifica l'ACE di autorizzazione all'accesso esistente.

Per il codice di esempio che unisce una nuova ace in un ACL esistente, vedere Modifica degli ACL di un oggetto in C++.