Funzione CreatePrivateObjectSecurity (securitybaseapi.h)
La funzione CreatePrivateObjectSecurity alloca e inizializza un descrittore di sicurezza self-relative per un nuovo oggetto privato. Un server protetto chiama questa funzione quando crea un nuovo oggetto privato.
Per specificare il GUID del tipo di oggetto del nuovo oggetto o controllare il modo in cui vengono ereditate le voci di controllo di accesso ,usare la funzione CreatePrivateObjectSecurityEx .
Sintassi
BOOL CreatePrivateObjectSecurity(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in, optional] PSECURITY_DESCRIPTOR CreatorDescriptor,
[out] PSECURITY_DESCRIPTOR *NewDescriptor,
[in] BOOL IsDirectoryObject,
[in, optional] HANDLE Token,
[in] PGENERIC_MAPPING GenericMapping
);
Parametri
[in, optional] ParentDescriptor
Puntatore al descrittore di sicurezza per la directory padre in cui viene creato un nuovo oggetto. Se non esiste alcuna directory padre, questo parametro può essere NULL.
[in, optional] CreatorDescriptor
Puntatore a un descrittore di sicurezza fornito dall'autore dell'oggetto. Se l'autore dell'oggetto non passa in modo esplicito le informazioni di sicurezza per il nuovo oggetto, questo parametro deve essere NULL.
[out] NewDescriptor
Puntatore a una variabile che riceve un puntatore al descrittore di sicurezza auto-relativo appena allocato. Il chiamante deve chiamare la funzione DestroyPrivateObjectSecurity per liberare questo descrittore di sicurezza.
[in] IsDirectoryObject
Specifica se il nuovo oggetto è un contenitore. Un valore true indica che l'oggetto contiene altri oggetti, ad esempio una directory.
[in, optional] Token
Handle per il token di accesso per il processo client per il cui conto viene creato l'oggetto. Se si tratta di un token di rappresentazione, deve essere a livello di SecurityIdentification o superiore. Per una descrizione completa del livello di rappresentazione di SecurityIdentification, vedere il tipo enumerato SECURITY_IMPERSONATION_LEVEL .
Un token client viene usato per recuperare le informazioni di sicurezza predefinite per il nuovo oggetto, ad esempio il proprietario predefinito, il gruppo primario e l'elenco di controllo di accesso discrezionale. Il token deve essere aperto per l'accesso TOKEN_QUERY .
Se tutte le condizioni seguenti sono vere, l'handle deve essere aperto per l'accesso TOKEN_DUPLICATE oltre all'accesso TOKEN_QUERY.
- L'handle del token fa riferimento a un token primario.
- Il descrittore di sicurezza del token contiene uno o più ACL con il SID OwnerRights .
- Per il parametro CreatorDescriptor viene specificato un descrittore di sicurezza.
- Il chiamante di questa funzione non imposta il flag di SEF_AVOID_OWNER_RESTRICTION nel parametro AutoInheritFlags .
[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
Se viene specificato un elenco di controllo di accesso del sistema (SACL) nel SECURITY_DESCRIPTOR specificato dal parametro CreatorDescriptor, il parametro Token deve avere il privilegio SE_SECURITY_NAME abilitato. La funzione CreatePrivateObjectSecurity controlla questo privilegio e può generare controlli durante il processo.
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
Funzioni di Controllo di accesso client/server