Funzione SetSecurityDescriptorDacl (securitybaseapi.h)

La funzione SetSecurityDescriptorDacl imposta informazioni in un elenco di controllo di accesso discrezionale (DACL). Se un'elenco dati è già presente nel descrittore di sicurezza, l'elenco dati viene sostituito.

Sintassi

BOOL SetSecurityDescriptorDacl(
  [in, out]      PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in]           BOOL                 bDaclPresent,
  [in, optional] PACL                 pDacl,
  [in]           BOOL                 bDaclDefaulted
);

Parametri

[in, out] pSecurityDescriptor

Puntatore alla struttura SECURITY_DESCRIPTOR a cui la funzione aggiunge l'elenco di controllo livello dati. Questo descrittore di sicurezza deve essere in formato assoluto , il che significa che i membri devono essere puntatori ad altre strutture, anziché offset ai dati contigui.

[in] bDaclPresent

Flag che indica la presenza di un'elenco dati nel descrittore di sicurezza. Se questo parametro è TRUE, la funzione imposta il flag di SE_DACL_PRESENT nella struttura SECURITY_DESCRIPTOR_CONTROL e usa i valori nei parametri pDacl e bDaclDefaulted. Se questo parametro è FALSE, la funzione cancella il flag di SE_DACL_PRESENT e pDacl e bDaclDefaulted vengono ignorati.

[in, optional] pDacl

Puntatore a una struttura ACL che specifica l'elenco dati per il descrittore di sicurezza. Se questo parametro è NULL, viene assegnato un DACL NULL al descrittore di sicurezza, che consente l'accesso all'oggetto. L'elenco di controllo livello dati viene fatto riferimento, non copiato in, il descrittore di sicurezza.

[in] bDaclDefaulted

Flag che indica l'origine dell'elenco dati. Se questo flag è TRUE, l'elenco di controllo livello dati è stato recuperato da un meccanismo predefinito. Se FALSE, l'elenco dati è stato specificato in modo esplicito da un utente. La funzione archivia questo valore nel flag SE_DACL_DEFAULTED della struttura SECURITY_DESCRIPTOR_CONTROL . Se questo parametro non è specificato, il flag di SE_DACL_DEFAULTED viene cancellato.

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

Esiste una differenza importante tra un daCL vuoto e un daCL non esistente. Quando un daCL è vuoto, non contiene voci di controllo di accesso (ACL); pertanto, non vengono concessi diritti di accesso in modo esplicito. Di conseguenza, l'accesso all'oggetto viene negato in modo implicito.

Quando un oggetto non ha un daCL (quando il parametro pDacl è NULL), non viene assegnata alcuna protezione all'oggetto e vengono concesse tutte le richieste di accesso. Per mantenere la sicurezza, limitare l'accesso usando un elenco dati.

Esistono tre possibili risultati in configurazioni diverse del flag bDaclPresent e del parametro pDacl :

  • Quando il parametro pDacl punta a un daCL e il flag bDaclPresent è TRUE, viene specificato un daCL e deve contenere ACL consentiti per l'accesso per consentire l'accesso all'oggetto.
  • Quando il parametro pDacl non punta a un daCL e il flag bDaclPresent è TRUE, viene specificato un daCL NULL . È consentito tutto l'accesso. Non è consigliabile usare un daCL NULL con un oggetto perché qualsiasi utente può modificare l'elenco dati e il proprietario del descrittore di sicurezza. Ciò interferirà con l'uso dell'oggetto.
  • Quando il parametro pDacl non punta a un daCL e il flag bDaclPresent è FALSE, è possibile specificare un elenco di controllo livello dati per l'oggetto tramite un meccanismo di ereditarietà o predefinito.

Esempio

Per un esempio che usa questa funzione, vedere Creazione di un descrittore di sicurezza per un nuovo oggetto.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione securitybaseapi.h (include Windows.h)
Libreria Advapi32.lib
DLL Advapi32.dll

Vedi anche

GetSecurityDescriptorDacl

InitializeSecurityDescriptor

IsValidSecurityDescriptor

Controllo di accesso di basso livello

Funzioni di Controllo di accesso di basso livello

SECURITY_DESCRIPTOR

SECURITY_DESCRIPTOR_CONTROL

SetSecurityDescriptorGroup

SetSecurityDescriptorOwner

SetSecurityDescriptorSacl