Condividi tramite


Funzione LsaLookupSids (ntsecapi.h)

[LsaLookupSids è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. È possibile che in versioni successive sia stata modificata o non sia più disponibile. Usare invece LsaLookupSids2.]

La funzione LsaLookupSids cerca i nomi che corrispondono a una matrice di identificatori di sicurezza (SID). Se LsaLookupSids non riesce a trovare un nome corrispondente a un SID, la funzione restituisce il SID in formato carattere.

Sintassi

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

Parametri

[in] PolicyHandle

Handle per 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] Count

Specifica il numero di SID nella matrice Sids . Questo è anche il numero di voci restituite nella matrice Names . 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, SID utente, gruppo o SID di account di gruppo locale o SID di dominio.

[out] ReferencedDomains

Riceve un puntatore a un puntatore a una struttura LSA_REFERENCED_DOMAIN_LIST . Il membro Domains 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 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 le informazioni non sono più necessarie, 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 Names 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 nella matrice Names è l'indice di una voce nella matrice Domains restituita nel parametro ReferencedDomains . L'indice identifica la matrice Domains per il dominio in cui è stato trovato il SID.

Quando le informazioni non sono più necessarie, 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 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 è troppo grande.
 

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

Commenti

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 LsaLookupSids non riesce a convertire un SID, la funzione usa l'algoritmo seguente:

  1. Se il dominio del SID è noto, il buffer ReferencedDomains contiene una voce per il dominio e la stringa restituita nel parametro Names è una rappresentazione Unicode dell'identificatore relativo (RID) dell'account dal SID.
  2. Se il dominio del SID non è noto, la stringa restituita nel parametro Names è una rappresentazione Unicode dell'intero SID e non esiste alcun record di dominio per questo SID nel buffer ReferencedDomains .
Oltre a cercare SID per account locali, account di dominio locali e account di dominio esplicitamente attendibili, LsaLookupSids può cercare i SID per qualsiasi account 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 i SID precedenti 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 XP [solo app desktop]
Server minimo supportato Windows Server 2003 [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