Creazione o modifica di un elenco di controllo di accesso
Windows supporta un set di funzioni che creano un elenco di controlli di accesso (ACL) o modificano le voci di controllo di accesso in un elenco di controllo di accesso esistente.
La funzione SetEntriesInAcl crea un nuovo ACL. SetEntriesInAcl può specificare un set completamente nuovo di ACL oppure può 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 struttura TRUSTEE che identifica il trustee.
Per aggiungere un nuovo ACE a un ACL esistente
- Usare la funzione GetSecurityInfo o GetNamedSecurityInfo per ottenere il descrittore di sicurezza esistente o SACL da un descrittore di sicurezza di un oggetto.
- Per ogni nuovo ACE, chiamare la funzione BuildExplicitAccessWithName per compilare una struttura EXPLICIT_ACCESS con le informazioni che descrivono l'ACE.
- 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 i relativi ACL.
- Chiamare la funzione SetSecurityInfo o 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. 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 un nuovo ace negato di accesso per il trustee ed elimina o modifica l'ACE consentito per l'utente attendibile esistente.
Per codice di esempio che unisce un nuovo ACE in un elenco di controllo di controllo di accesso esistente, vedere Modifica degli ACL di un oggetto in C++.