Condividi tramite


Funzione LsaLookupSids2 (ntsecapi.h)

La funzione LsaLookupSids2 cerca i nomi corrispondenti a una matrice di identificatori di sicurezza (SID) e supporta le identità del provider Internet. Se LsaLookupSids2 non riesce a trovare un nome corrispondente a un SID, la funzione restituisce il SID in formato carattere. È consigliabile usare questa funzione anziché la funzione LsaLookupSids .

Sintassi

NTSTATUS LsaLookupSids2(
  [in]  LSA_HANDLE                  PolicyHandle,
  [in]  ULONG                       LookupOptions,
  [in]  ULONG                       Count,
  [in]  PSID                        *Sids,
  [out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
  [out] PLSA_TRANSLATED_NAME        *Names
);

Parametri

[in] PolicyHandle

Handle a un oggetto Policy . Questo handle deve avere il diritto di accesso POLICY_LOOKUP_NAMES. Per altre informazioni, vedere Apertura di un handle oggetto Criteri.

[in] LookupOptions

Contrassegni che modificano il comportamento di ricerca.

Valore Significato
LSA_LOOKUP_DISALLOW_CONNECTED_ACCOUNT_INTERNET_SID
I SID Internet dai provider di identità per gli account connessi non sono consentiti. Gli account connessi sono gli account che dispongono di un account shadow corrispondente nel database SAM locale connesso a un provider di identità online. Ad esempio, MicrosoftAccount è un account connesso.
LSA_LOOKUP_PREFER_INTERNET_NAMES
Restituisce i nomi Internet. In caso contrario, viene restituito il nome dello stile NT4 (dominio\username). L'eccezione è se viene specificato il SID Internet dell'account Microsoft, nel qual caso viene restituito il nome Internet, a meno che non venga specificato LSA_LOOKUP_DISALLOW_NON_WINDOWS_INTERNET_SID .
LSA_LOOKUP_RETURN_LOCAL_NAMES
Restituisce sempre nomi di account SAM locali anche per le identità del provider Internet.

[in] Count

Specifica il numero di SID nella matrice Sids . Si tratta anche del numero di voci restituite nella matrice Nomi . Questo valore deve essere minore o uguale a 20480.

[in] Sids

Puntatore a una matrice di puntatori SID da cercare. I SID possono essere SID noti, utente, gruppo o SID di gruppo locale o SID di dominio.

[out] ReferencedDomains

Riceve un puntatore a un puntatore a una struttura LSA_REFERENCED_DOMAIN_LIST . Il membro Domini di questa struttura è una matrice che contiene una voce per ogni dominio in cui è stato trovato un SID. La voce per ogni dominio contiene il SID e il nome flat del dominio. Per i domini Di Windows, il nome flat è il nome NetBIOS. Per i collegamenti con domini non Windows, il nome flat è il nome di identificazione di tale dominio o è NULL.

Quando non sono più necessarie le informazioni, passare il puntatore restituito a LsaFreeMemory. Questa memoria deve essere liberata anche quando la funzione ha esito negativo con i codici di errore STATUS_NONE_MAPPED o STATUS_SOME_NOT_MAPPED

[out] Names

Riceve un puntatore a una matrice di strutture LSA_TRANSLATED_NAME . Ogni voce nella matrice Nomi contiene le informazioni sul nome per la voce corrispondente nella matrice Sids . Per i SID dell'account, il membro Name di ogni struttura contiene il nome isolato dell'account. Per i SID di dominio, il membro Name non è valido.

Il membro DomainIndex di ogni voce della matrice Name è l'indice di una voce nella matrice Domini restituita nel parametro ReferencedDomains . L'indice identifica la matrice Domini per il dominio in cui è stato trovato il SID.

Quando non sono più necessarie le informazioni, passare il puntatore restituito a LsaFreeMemory. Questa memoria deve essere liberata anche quando la funzione ha esito negativo con i codici di errore STATUS_NONE_MAPPED o STATUS_SOME_NOT_MAPPED

Valore restituito

Se la funzione ha esito positivo, il valore restituito è uno dei valori NTSTATUS seguenti.

Codice restituito Descrizione
STATUS_SOME_NOT_MAPPED
Non è stato possibile tradurre alcuni DEI SID. Si tratta di un valore restituito a livello informativo.
STATUS_SUCCESS
Tutti i SID sono stati trovati e tradotti correttamente.
 

Se la funzione ha esito negativo, il valore restituito è un codice NTSTATUS , che può essere uno dei valori seguenti o uno dei valori restituiti della funzione Criteri LSA.

Codice restituito Descrizione
STATUS_NONE_MAPPED
Nessuno dei SID è stato tradotto. Si tratta di un valore restituito a livello di errore.
STATUS_TOO_MANY_SIDS
Il parametro della matrice Sids era troppo grande.
 

È possibile usare la funzione LsaNtStatusToWinError per convertire il codice NTSTATUS in un codice di errore di Windows.

Commenti

Il flag LSA_LOOKUP_PREFER_INTERNET_NAMES deve essere usato per gli account Internet, ad esempio Gli account MicrosoftAccount e Azure Active Directory. Quando questo flag viene specificato, SID-Name ricerca restituisce l'UPN dell'account nel formato MicrosoftAccount\foo@outlook.com o AzureAD\foo@contoso.com. Per gli account Microsoft sia il SID SAM locale che il SID Internet generano la restituzione dell'UPN se questo flag è specificato. Se LSA_LOOKUP_PREFER_INTERNET_NAMES non viene specificato, per gli account AAD viene restituito il nome dello stile NT4 del modulo AzureAD\foo. Il nome dello stile NT4 è specifico del computer e il relativo utilizzo deve essere valutato attentamente e, se possibile, deve essere evitato. Per MicrosoftAccounts se LSA_LOOKUP_PREFER_INTERNET_NAMES non viene specificato, il SID locale dell'account viene convertito nel nome SAM locale e il SID Internet si traduce nel nome UPN.

Per i SID dell'account, la stringa restituita nel membro Name è il nome isolato dell'account, ad esempio user_name. Se è necessario il nome composito dell'account, ad esempio Acctg\user_name, ottenere il nome di dominio dal buffer ReferencedDomains e aggiungere una barra rovesciata e il nome isolato.

Se la funzione LsaLookupSids2 non può tradurre un SID, la funzione usa l'algoritmo seguente:

  1. Se il dominio SID è noto, il buffer ReferencedDomains contiene una voce per il dominio e la stringa restituita nel parametro Name è una rappresentazione Unicode dell'identificatore relativo dell'account dal SID.
  2. Se il dominio SID non è noto, la stringa restituita nel parametro Name è una rappresentazione Unicode dell'intero SID e non esiste alcun record di dominio per questo SID nel buffer ReferencedDomains .
Oltre a cercare i SID per gli account locali, gli account di dominio locali e gli account di dominio attendibili in modo esplicito, LsaLookupSids2 può cercare i SID in qualsiasi dominio nella foresta di Windows, inclusi i SID che vengono visualizzati solo nel campo SIDhistory di un account nella foresta. Il campo SIDhistory archivia gli ex SID di un account spostato da un altro dominio. Per eseguire queste ricerche, la funzione esegue una query sul catalogo globale della foresta.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 [solo app desktop]
Server minimo supportato Windows Server 2012 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ntsecapi.h
Libreria Advapi32.lib
DLL Advapi32.dll

Vedi anche

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_NAME

LsaOpenPolicy