Funzione ConvertToAutoInheritPrivateObjectSecurity (securitybaseapi.h)
La funzione ConvertToAutoInheritPrivateObjectSecurity converte un descrittore di sicurezza e i relativi elenchi di controllo di accesso (ACL) in un formato che supporta la propagazione automatica delle voci di controllo di accesso ereditabili.
Sintassi
BOOL ConvertToAutoInheritPrivateObjectSecurity(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in] PSECURITY_DESCRIPTOR CurrentSecurityDescriptor,
[out] PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
[in, optional] GUID *ObjectType,
[in] BOOLEAN IsDirectoryObject,
[in] PGENERIC_MAPPING GenericMapping
);
Parametri
[in, optional] ParentDescriptor
Puntatore al descrittore di sicurezza per il contenitore padre dell'oggetto . Se non è presente alcun contenitore padre, questo parametro è NULL.
[in] CurrentSecurityDescriptor
Puntatore al descrittore di sicurezza corrente dell'oggetto.
[out] NewSecurityDescriptor
Puntatore a una variabile che riceve un puntatore al descrittore di sicurezza auto-relativo appena allocato. È responsabilità del chiamante chiamare la funzione DestroyPrivateObjectSecurity per liberare questo descrittore di sicurezza.
[in, optional] ObjectType
Puntatore a una struttura GUID che identifica il tipo di oggetto associato al parametro CurrentSecurityDescriptor . Se l'oggetto non ha un GUID, questo parametro deve essere NULL.
[in] IsDirectoryObject
Se TRUE, il nuovo oggetto è un contenitore e può contenere altri oggetti. Se FALSE, il nuovo oggetto non è un contenitore.
[in] GenericMapping
Puntatore a una struttura GENERIC_MAPPING che specifica il mapping da ogni diritto generico a diritti specifici per l'oggetto.
Valore restituito
Se la funzione ha esito positivo, la funzione restituisce un valore diverso da zero.
Se la funzione ha esito negativo, restituisce zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
La funzione ConvertToAutoInheritPrivateObjectSecurity tenta di determinare se gli ACL nell'elenco di controllo di accesso discrezionale (DACL) e nell'elenco di controllo di accesso di sistema (SACL) del descrittore di sicurezza corrente sono stati ereditati dal descrittore di sicurezza padre. La funzione passa il parametro ParentDescriptor alla funzione CreatePrivateObjectSecurityEx per ottenere gli ACL che contengono solo ACL ereditati. Confronta quindi questi ACL con gli ACL nel descrittore di sicurezza originale per determinare quale degli ACL originali sono stati ereditati. Gli ACL non devono corrispondere a uno a uno. Ad esempio, un ace che consente l'accesso in lettura e scrittura a un trustee può essere equivalente a due ACL: un ace che consente l'accesso in lettura e un ace che consente l'accesso in scrittura.
Tutti gli ACL nel descrittore di sicurezza originale equivalenti agli ACL ereditati dal descrittore di sicurezza padre vengono contrassegnati con il flag INHERITED_ACE e aggiunti al nuovo descrittore di sicurezza. Tutti gli altri ACL nel descrittore di sicurezza originale vengono aggiunti al nuovo descrittore di sicurezza come ACL nonriti.
Se l'elenco DACL originale non dispone di ACL ereditati, la funzione imposta il flag SE_DACL_PROTECTED nei bit di controllo del nuovo descrittore di sicurezza. Analogamente, il flag SE_SACL_PROTECTED viene impostato se nessuno degli ACL nell'elenco SACL viene ereditato.
Per gli elenchi di controllo di accesso ereditati, la funzione riordina gli ACL in due gruppi. Il primo gruppo ha ACL che sono stati applicati direttamente all'oggetto . Il secondo gruppo ha ereditato gli ACL. Questo ordinamento garantisce che gli ACL nonriti abbiano la precedenza sugli ACL ereditati. Per altre informazioni, vedere Order of ACEs in a DACL.For more information, see Order of ACEs in a DACL.
La funzione imposta i flag SE_DACL_AUTO_INHERITED e SE_SACL_AUTO_INHERITED nei bit di controllo del nuovo descrittore di sicurezza.
La funzione non modifica l'ordinamento degli ACL consentiti per l'accesso in relazione agli ACL negati dall'accesso nell'elenco di controllo di accesso, perché a tale scopo la semantica del descrittore di sicurezza risultante. Se la funzione non riesce a convertire il DACL senza modificare la semantica, lascia invariato l'elenco DACL e imposta il flag SE_DACL_PROTECTED.
Il nuovo descrittore di sicurezza ha lo stesso proprietario e il gruppo primario del descrittore di sicurezza originale.
Il nuovo descrittore di sicurezza equivale al descrittore di sicurezza originale, quindi il chiamante non necessita di diritti di accesso o privilegi per aggiornare il descrittore di sicurezza al nuovo formato.
Questa funzione funziona con ACL_REVISION e ACL_REVISION_DS ACL.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | securitybaseapi.h (include Windows.h) |
Libreria | Advapi32.lib |
DLL | Advapi32.dll |
Vedi anche
Controllo di accesso client/server