Funzione GetSecurityInfo (aclapi.h)

La funzione GetSecurityInfo recupera una copia del descrittore di sicurezza per un oggetto specificato da un handle.

Sintassi

DWORD GetSecurityInfo(
  [in]            HANDLE               handle,
  [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] handle

Handle all'oggetto da cui recuperare le informazioni di sicurezza.

[in] ObjectType

SE_OBJECT_TYPE valore di enumerazione che indica il tipo di oggetto.

[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. Il puntatore restituito è valido solo se si imposta il flag di OWNER_SECURITY_INFORMATION. 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. Il puntatore restituito è valido solo se si imposta il flag GROUP_SECURITY_INFORMATION. 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. Il puntatore restituito è valido solo se si imposta il flag DACL_SECURITY_INFORMATION. Questo parametro può essere NULL se non è necessario l'elenco DACL.

[out, optional] ppSacl

Puntatore a una variabile che riceve un puntatore all'oggetto SACL nel descrittore di sicurezza restituito. Il puntatore restituito è valido solo se si imposta il flag SACL_SECURITY_INFORMATION. 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 i parametri ppsidOwner, ppsidGroup, ppDacl e ppSacl non sono NULL e il parametro SecurityInfo specifica che vengono recuperati dall'oggetto, tali parametri punteranno ai parametri corrispondenti nel descrittore di sicurezza restituito in ppSecurityDescriptor.

Per leggere il proprietario, il gruppo o l'elenco DACL dal descrittore di sicurezza dell'oggetto, è necessario che al processo chiamante sia stato concesso READ_CONTROL l'accesso all'apertura dell'handle. Per ottenere READ_CONTROL accesso, il chiamante deve essere il proprietario dell'oggetto o l'elenco DACL dell'oggetto deve concedere l'accesso.

Per leggere sacl dal descrittore di sicurezza, è necessario che al processo chiamante sia stato concesso ACCESS_SYSTEM_SECURITY l'accesso all'apertura dell'handle. Il modo corretto per ottenere questo accesso consiste nell'abilitare il privilegio SE_SECURITY_NAME nel token corrente del chiamante, aprire l'handle per ACCESS_SYSTEM_SECURITY accesso e quindi disabilitare il privilegio. Per informazioni sulle implicazioni di sicurezza dell'abilitazione dei privilegi, vedere Esecuzione con privilegi speciali.

È possibile usare la funzione GetSecurityInfo con i tipi di oggetti seguenti:

  • File o directory locali o remoti in un file system NTFS
  • Named Pipes
  • Stampanti locali o remote
  • Servizi Windows locali o remoti
  • Condivisioni di rete
  • Chiavi del Registro di sistema
  • Semafori, eventi, mutex e timer waitable
  • Processi, thread, processi e oggetti di mapping dei file
  • Stazioni e desktop delle finestre di servizio interattive
  • 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.

Esempio

Per un esempio che usa questa funzione, vedere Ricerca del proprietario di un oggetto File.

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

Panoramica di Controllo di accesso

Funzioni Controllo di accesso di base

GetNamedSecurityInfo

LocalFree

Costanti dei privilegi

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo

SetSecurityInfo