Funzione GetNamedSecurityInfoA (aclapi.h)
La funzione GetNamedSecurityInfo recupera una copia del descrittore di sicurezza per un oggetto specificato dal nome.
Sintassi
DWORD GetNamedSecurityInfoA(
[in] LPCSTR pObjectName,
[in] SE_OBJECT_TYPE ObjectType,
[in] SECURITY_INFORMATION SecurityInfo,
[out, optional] PSID *ppsidOwner,
[out, optional] PSID *ppsidGroup,
[out, optional] PACL *ppDacl,
[out, optional] PACL *ppSacl,
[out, optional] PSECURITY_DESCRIPTOR *ppSecurityDescriptor
);
Parametri
[in] pObjectName
Puntatore a una stringa con terminazione Null che specifica il nome dell'oggetto da cui recuperare le informazioni di sicurezza. Per le descrizioni dei formati stringa per i diversi tipi di oggetto, vedere SE_OBJECT_TYPE.
[in] ObjectType
Specifica un valore dell'enumerazione SE_OBJECT_TYPE che indica il tipo di oggetto denominato dal parametro pObjectName .
[in] SecurityInfo
Set di flag di bit che indicano il tipo di informazioni di sicurezza da recuperare. Questo parametro può essere una combinazione dei flag di bit SECURITY_INFORMATION .
[out, optional] ppsidOwner
Puntatore a una variabile che riceve un puntatore al SID proprietario nel descrittore di sicurezza restituito in ppSecurityDescriptor o NULL se il descrittore di sicurezza non dispone di SID proprietario. Il puntatore restituito è valido solo se si imposta il flag di OWNER_SECURITY_INFORMATION. Inoltre, questo parametro può essere NULL se non è necessario il SID proprietario.
[out, optional] ppsidGroup
Puntatore a una variabile che riceve un puntatore al SID del gruppo primario nel descrittore di sicurezza restituito o NULL se il descrittore di sicurezza non ha un SID di gruppo. Il puntatore restituito è valido solo se si imposta il flag GROUP_SECURITY_INFORMATION. Inoltre, questo parametro può essere NULL se non è necessario il SID del gruppo.
[out, optional] ppDacl
Puntatore a una variabile che riceve un puntatore all'elenco DACL nel descrittore di sicurezza restituito o NULL se il descrittore di sicurezza non ha un DACL. Il puntatore restituito è valido solo se si imposta il flag DACL_SECURITY_INFORMATION. Inoltre, questo parametro può essere NULL se non è necessario l'elenco DACL.
[out, optional] ppSacl
Puntatore a una variabile che riceve un puntatore a SACL nel descrittore di sicurezza restituito o NULL se il descrittore di sicurezza non ha sacl. Il puntatore restituito è valido solo se si imposta il flag SACL_SECURITY_INFORMATION. Inoltre, questo parametro può essere NULL se non è necessario SACL.
[out, optional] ppSecurityDescriptor
Puntatore a una variabile che riceve un puntatore al descrittore di sicurezza dell'oggetto. Al termine dell'uso del puntatore, liberare il buffer restituito chiamando la funzione LocalFree .
Questo parametro è obbligatorio se uno dei parametri ppsidOwner, ppsidGroup, ppDacl o ppSacl non è NULL.
Valore restituito
Se la funzione ha esito positivo, il valore restituito viene ERROR_SUCCESS.
Se la funzione ha esito negativo, il valore restituito è un codice di errore diverso da zero definito in WinError.h.
Commenti
Se uno dei parametri ppsidOwner, ppsidGroup, ppDacl o ppSacl è diverso da NULL e il parametro SecurityInfo specifica che vengono recuperati dall'oggetto, tali parametri punteranno ai parametri corrispondenti nel descrittore di sicurezza restituito in ppSecurityDescriptor. Se il descrittore di sicurezza non contiene le informazioni richieste, il parametro corrispondente verrà impostato su NULL.
Per leggere il proprietario, il gruppo o il DACL dal descrittore di sicurezza dell'oggetto, l'elenco DACL dell'oggetto deve concedere READ_CONTROL l'accesso al chiamante oppure il chiamante deve essere il proprietario dell'oggetto.
Per leggere l'elenco di controllo di accesso di sistema dell'oggetto, è necessario abilitare il privilegio SE_SECURITY_NAME per il processo chiamante. Per informazioni sulle implicazioni di sicurezza dell'abilitazione dei privilegi, vedere Esecuzione con privilegi speciali.
È possibile usare la funzione GetNamedSecurityInfo con i tipi di oggetti seguenti:
- File o directory locali o remoti in un file system NTFS
- Stampanti locali o remote
- Servizi Windows locali o remoti
- Condivisioni di rete
- Chiavi del Registro di sistema
- Semafori, eventi, mutex e timer waitable
- Oggetti di mapping dei file
- Oggetti del servizio directory
Questa funzione trasferisce le informazioni in testo non crittografato. Le informazioni trasferite da questa funzione vengono firmate a meno che la firma non sia stata disattivata per il sistema, ma non viene eseguita alcuna crittografia.
Per altre informazioni sul controllo dell'accesso agli oggetti tramite account utente, account di gruppo o sessioni di accesso, vedere How DACLs Control Access to an Object .For more information about control access to objects through user accounts, group accounts, or logon sessions, see How DACLs Control Access to an Object.
Esempio
Per un esempio che usa GetNamedSecurityInfo, vedere Modifica degli ACL di un oggetto.
Nota
L'intestazione aclapi.h definisce GetNamedSecurityInfo come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
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 | aclapi.h |
Libreria | Advapi32.lib |
DLL | Advapi32.dll |