Condividi tramite


Funzione AddAccessDeniedObjectAce (securitybaseapi.h)

La funzione AddAccessDeniedObjectAce aggiunge una voce di controllo di accesso negato (ACE) alla fine di un elenco di controllo di accesso discrezionale (DACL). La nuova ace può negare l'accesso a un oggetto o a un set di proprietà o a una proprietà in un oggetto . È anche possibile usare AddAccessDeniedObjectAce per aggiungere un ace che può ereditare solo un tipo specificato di oggetto figlio.

Sintassi

BOOL AddAccessDeniedObjectAce(
  [in, out]      PACL  pAcl,
  [in]           DWORD dwAceRevision,
  [in]           DWORD AceFlags,
  [in]           DWORD AccessMask,
  [in, optional] GUID  *ObjectTypeGuid,
  [in, optional] GUID  *InheritedObjectTypeGuid,
  [in]           PSID  pSid
);

Parametri

[in, out] pAcl

Puntatore a un DACL. La funzione AddAccessDeniedObjectAce aggiunge un ace di accesso negato alla fine di questo DACL. Ace è sotto forma di struttura ACCESS_DENIED_OBJECT_ACE .

[in] dwAceRevision

Specifica il livello di revisione dell'elenco DACL da modificare. Questo valore deve essere ACL_REVISION_DS. Se il livello di revisione di DACL è inferiore a ACL_REVISION_DS, la funzione lo modifica in ACL_REVISION_DS.

[in] AceFlags

Set di flag di bit che controllano l'ereditarietà ACE. La funzione imposta questi flag nel membro AceFlags della struttura ACE_HEADER del nuovo ACE. Questo parametro può essere una combinazione dei valori seguenti.

Valore Significato
CONTAINER_INHERIT_ACE
L'ace viene ereditato dagli oggetti contenitore.
INHERIT_ONLY_ACE
L'ace non si applica all'oggetto a cui è assegnato l'elenco di controllo di accesso ( ACL), ma può essere ereditato dagli oggetti figlio.
INHERITED_ACE
Indica un ace ereditato. Questo flag consente alle operazioni che modificano la sicurezza in un albero di oggetti per modificare gli ACL ereditati, senza modificare gli ACL applicati direttamente all'oggetto.
NO_PROPAGATE_INHERIT_ACE
I bit OBJECT_INHERIT_ACE e CONTAINER_INHERIT_ACE non vengono propagati a un ace ereditato.
OBJECT_INHERIT_ACE
L'ACE viene ereditato da oggetti non contenitore.

[in] AccessMask

Set di flag di bit che usano il formato ACCESS_MASK per specificare i diritti di accesso negati dal nuovo ACE all'identificatore di sicurezza (SID) specificato.

[in, optional] ObjectTypeGuid

Puntatore a una struttura GUID che identifica il tipo di oggetto, set di proprietà o proprietà protetto dal nuovo ACE. Se questo parametro è NULL, il nuovo ACE protegge l'oggetto a cui viene assegnato l'ACL.

[in, optional] InheritedObjectTypeGuid

Puntatore a una struttura GUID che identifica il tipo di oggetto che può ereditare il nuovo ACE. Se questo parametro è diverso da NULL, solo il tipo di oggetto specificato può ereditare l'ACE. Se NULL, qualsiasi tipo di oggetto figlio può ereditare l'ACE. In entrambi i casi, l'ereditarietà viene controllata anche dal valore del parametro AceFlags , nonché da qualsiasi protezione contro l'ereditarietà inserita negli oggetti figlio.

[in] pSid

Puntatore a un SID che identifica l'utente, il gruppo o la sessione di accesso a cui il nuovo ACE consente l'accesso.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError. Di seguito sono riportati i possibili valori di errore.

Codice restituito Descrizione
ERROR_ALLOTTED_SPACE_EXCEEDED
La nuova ace non rientra nell'elenco di controllo di accesso. È necessario un buffer ACL più grande.
ERROR_INVALID_ACL
L'elenco di controllo di accesso specificato non è formato correttamente.
ERROR_INVALID_FLAGS
Il parametro AceFlags non è valido.
ERROR_INVALID_SID
Il SID specificato non è strutturalmente valido.
ERROR_REVISION_MISMATCH
La revisione specificata non è nota o non è compatibile con quella dell'ACL.
ERROR_SUCCESS
L'ace è stato aggiunto correttamente.

Commenti

Se sia ObjectTypeGuid che InheritedObjectTypeGuid sono NULL, usare la funzione AddAccessDeniedAceEx anziché AddAccessDeniedObjectAce. Questo è consigliato perché un ACCESS_DENIED_ACE è più piccolo ed efficiente di un ACCESS_DENIED_OBJECT_ACE.

Sebbene la funzione AddAccessDeniedObjectAce aggiunga la nuova ace alla fine dell'ACL, gli ACL di accesso negato devono essere visualizzati all'inizio di un ACL. Il chiamante deve assicurarsi che gli ACL vengano aggiunti all'elenco DACL nell'ordine corretto. Per altre informazioni, vedere Order of ACEs in a DACL.For more information, see Order of ACEs in a DACL.

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

ACCESS_DENIED_ACE

ACCESS_DENIED_OBJECT_ACE

ACCESS_MASK

ACE_HEADER

AddAccessAllowedObjectAce

AddAccessDeniedAceEx

AddAuditAccessObjectAce

GUID

Controllo di accesso di basso livello

Funzioni di Controllo di accesso di basso livello