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.
Se le condizioni precedenti non vengono soddisfatte, una chiamata a questa funzione non riesce; tuttavia, i criteri di accesso standard non vengono applicati.

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

Panoramica Controllo di accesso client/server

CreatePrivateObjectSecurity

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetFileSecurity

SetKernelObjectSecurity

SetPrivateObjectSecurityEx

SetUserObjectSecurity