Funzione AccessCheckByType (securitybaseapi.h)
La funzione AccessCheckByType determina se un descrittore di sicurezza concede un set specificato di diritti di accesso al client identificato da un token di accesso. La funzione può controllare l'accesso del client a una gerarchia di oggetti, ad esempio un oggetto, i set di proprietà e le proprietà. La funzione concede o nega l'accesso alla gerarchia nel suo complesso. In genere, le applicazioni server usano questa funzione per controllare l'accesso a un oggetto privato.
Sintassi
BOOL AccessCheckByType(
[in] PSECURITY_DESCRIPTOR pSecurityDescriptor,
[in, optional] PSID PrincipalSelfSid,
[in] HANDLE ClientToken,
[in] DWORD DesiredAccess,
[in, out, optional] POBJECT_TYPE_LIST ObjectTypeList,
[in] DWORD ObjectTypeListLength,
[in] PGENERIC_MAPPING GenericMapping,
[out, optional] PPRIVILEGE_SET PrivilegeSet,
[in, out] LPDWORD PrivilegeSetLength,
[out] LPDWORD GrantedAccess,
[out] LPBOOL AccessStatus
);
Parametri
[in] pSecurityDescriptor
Puntatore a una struttura SECURITY_DESCRIPTOR su cui viene controllato l'accesso.
[in, optional] PrincipalSelfSid
Puntatore a un identificatore di sicurezza (SID). Se il descrittore di sicurezza è associato a un oggetto che rappresenta un'entità (ad esempio un oggetto utente), il parametro PrincipalSelfSid deve essere il SID dell'oggetto . Quando si valuta l'accesso, questo SID sostituisce logicamente il SID in qualsiasi voce di controllo di accesso contenente il SID noto PRINCIPAL_SELF SID (S-1-5-10). Per informazioni sui SID noti, vedere SID noti.
Impostare questo parametro su NULL se l'oggetto protetto non rappresenta un'entità.
[in] ClientToken
Handle a un token di rappresentazione che rappresenta il client che tenta di ottenere l'accesso. L'handle deve avere TOKEN_QUERY accesso al token; in caso contrario, la funzione ha esito negativo con ERROR_ACCESS_DENIED.
[in] DesiredAccess
Maschera di accesso che specifica i diritti di accesso da controllare. Questa maschera deve essere stata mappata dalla funzione MapGenericMask per non contenere diritti di accesso generici.
Se questo parametro è MAXIMUM_ALLOWED, la funzione imposta la maschera di accesso GrantedAccess per indicare i diritti di accesso massimo consentiti dal descrittore di sicurezza.
[in, out, optional] ObjectTypeList
Puntatore a una matrice di strutture OBJECT_TYPE_LIST che identificano la gerarchia dei tipi di oggetto per cui controllare l'accesso. Ogni elemento nella matrice specifica un GUID che identifica il tipo di oggetto e un valore che indica il livello del tipo di oggetto nella gerarchia dei tipi di oggetto. La matrice non deve avere due elementi con lo stesso GUID.
La matrice deve avere almeno un elemento. Il primo elemento della matrice deve essere a livello zero e identificare l'oggetto stesso. La matrice può avere un solo elemento zero di livello. Il secondo elemento è un oggetto secondario, ad esempio un set di proprietà, a livello 1. Dopo ogni voce di livello 1 sono voci subordinate per il livello 2 a 4 oggetti secondari. Pertanto, i livelli per gli elementi nella matrice potrebbero essere {0, 1, 2, 2, 1, 2, 2, 3}. Se l'elenco dei tipi di oggetto non è in ordine, AccessCheckByType ha esito negativo e GetLastError restituisce ERROR_INVALID_PARAMETER.
Se ObjectTypeList è NULL, AccessCheckByType corrisponde alla funzione AccessCheck .
[in] ObjectTypeListLength
Specifica il numero di elementi nella matrice ObjectTypeList .
[in] GenericMapping
Puntatore alla struttura GENERIC_MAPPING associata all'oggetto per cui viene controllato l'accesso. Il membro GenericAll della struttura GENERIC_MAPPING deve contenere tutti i diritti di accesso che possono essere concessi dal gestore risorse, inclusi STANDARD_RIGHTS_ALL e tutti i diritti impostati nei membri GenericRead, GenericWrite e GenericExecute .
[out, optional] PrivilegeSet
Puntatore a una struttura PRIVILEGE_SET che riceve i privilegi usati per eseguire la convalida dell'accesso. Se non sono stati usati privilegi, la funzione imposta il membro PrivilegeCount su zero.
[in, out] PrivilegeSetLength
Specifica le dimensioni, in byte, del buffer a cui punta il parametro PrivilegeSet .
[out] GrantedAccess
Puntatore a una maschera di accesso che riceve i diritti di accesso concessi. Se AccessStatus è impostato su FALSE, la funzione imposta la maschera di accesso su zero. Se la funzione ha esito negativo, non imposta la maschera di accesso.
[out] AccessStatus
Puntatore a una variabile che riceve i risultati del controllo di accesso. Se il descrittore di sicurezza consente i diritti di accesso richiesti al client identificato dal token di accesso, AccessStatus è impostato su TRUE. In caso contrario, AccessStatus è impostato su FALSE e è possibile chiamare GetLastError per ottenere informazioni di errore estese.
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.
Commenti
Per altre informazioni, vedere la panoramica su Come AccessCheck Works .
La funzione AccessCheckByType confronta il descrittore di sicurezza specificato con il token di accesso specificato e indica, nel parametro AccessStatus , se l'accesso viene concesso o negato.
La matrice ObjectTypeList non rappresenta necessariamente l'intero oggetto definito. Invece, rappresenta il subset dell'oggetto per cui controllare l'accesso. Ad esempio, per controllare l'accesso a due proprietà in un set di proprietà, specificare un elenco di tipi di oggetto con quattro elementi: l'oggetto stesso a livello zero, la proprietà impostata a livello 1 e le due proprietà a livello 2.
La funzione AccessCheckByType valuta gli ACL che si applicano all'oggetto stesso e gli ACL specifici dell'oggetto per i tipi di oggetto elencati nella matrice ObjectTypeList . La funzione ignora gli ACL specifici dell'oggetto per i tipi di oggetto non elencati nella matrice ObjectTypeList . Pertanto, i risultati restituiti nel parametro AccessStatus indicano l'accesso consentito al subset dell'oggetto definito dal parametro ObjectTypeList , non all'intero oggetto.
Per altre informazioni sul modo in cui una gerarchia degli ACL controlla l'accesso a un oggetto e ai relativi oggetti secondari, vedere ACL per controllare l'accesso alle proprietà di un oggetto.
Se il descrittore di sicurezza è NULL, il parametro AccessStatus restituisce TRUE, indicando che il client ha l'accesso richiesto.
Se il descrittore di sicurezza non contiene i SID del proprietario e del gruppo, AccessCheckByType ha esito negativo con ERROR_INVALID_SECURITY_DESCR.
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
AccessCheckByTypeAndAuditAlarm
AccessCheckByTypeResultListAndAuditAlarm
Controllo di accesso client/server