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

Funzioni di Controllo di accesso client/server

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GUID