Funzione SetPrivateObjectSecurity (securitybaseapi.h)
La funzione SetPrivateObjectSecurity modifica il descrittore di sicurezza di un oggetto privato.
Per specificare se il server protetto supporta l'ereditarietà automatica delle voci di controllo di accesso (ACEs), usare la funzione SetPrivateObjectSecurityEx .
Sintassi
BOOL SetPrivateObjectSecurity(
[in] SECURITY_INFORMATION SecurityInformation,
[in] PSECURITY_DESCRIPTOR ModificationDescriptor,
[in, out] PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
[in] PGENERIC_MAPPING GenericMapping,
[in, optional] HANDLE Token
);
Parametri
[in] SecurityInformation
Indica le parti del descrittore di sicurezza da impostare. Questo valore può essere una combinazione dei flag SECURITY_INFORMATION bit.
[in] ModificationDescriptor
Puntatore a una struttura SECURITY_DESCRIPTOR . Le parti di questo descrittore di sicurezza indicato dal parametro SecurityInformation vengono applicate al descrittore di sicurezza ObjectsSecurityDescriptor .
[in, out] ObjectsSecurityDescriptor
Puntatore a un puntatore a una struttura SECURITY_DESCRIPTOR . Questo descrittore di sicurezza deve essere in formato auto-relativo . La memoria per il descrittore di sicurezza deve essere allocata dall'heap del processo (GetProcessHeap) con la funzione HeapAlloc.
In input, questo è il descrittore di sicurezza corrente dell'oggetto privato. La funzione lo modifica per produrre il nuovo descrittore di sicurezza. Se necessario, la funzione SetPrivateObjectSecurity alloca memoria aggiuntiva per produrre un descrittore di sicurezza più grande.
[in] GenericMapping
Puntatore a una struttura GENERIC_MAPPING che specifica i diritti di accesso specifici e standard corrispondenti a ognuno dei diritti di accesso generici.
[in, optional] Token
Handle per il token di accesso per il client per conto del quale viene modificata la sicurezza dell'oggetto privato. Questo parametro è necessario per assicurarsi che il client abbia fornito un valore legittimo per un nuovo identificatore di sicurezza del proprietario (SID). Il token deve essere aperto per l'accesso TOKEN_QUERY.
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
Questa funzione è progettata solo per l'uso da parte di gestione risorse. Per implementare la semantica del controllo di accesso standard per l'aggiornamento dei descrittori di sicurezza, un gestore risorse deve verificare che le condizioni seguenti vengano soddisfatte prima di chiamare SetPrivateObjectSecurity:
- Se il proprietario dell'oggetto è impostato, il processo chiamante deve avere l'autorizzazione WRITE_OWNER o essere il proprietario dell'oggetto.
- Se l'elenco di controllo di accesso discrezionale dell'oggetto viene impostato, il processo chiamante deve disporre dell'autorizzazione WRITE_DAC o essere il proprietario dell'oggetto.
- Se l'elenco di controllo di accesso al sistema dell'oggetto è impostato, è necessario abilitare il privilegio SE_SECURITY_NAME per il processo chiamante.
Il processo che chiama questa funzione non deve rappresentare un client perché i client in genere non dispongono di privilegi appropriati necessari per le operazioni token sottostanti.
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