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 non gestisce le race condition. Se il thread chiama questa funzione nel momento approssimativo in cui un altro thread modifica il descrittore di sicurezza dell'oggetto, questa funzione potrebbe non riuscire.

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

Vedi anche

ACL

Controllo dell’accesso

Funzioni Controllo di accesso di base

GetSecurityInfo

LocalFree

Costanti dei privilegi

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo

SetSecurityInfo