Condividi tramite


Funzione LsaLookupNames2 (ntsecapi.h)

La funzione LsaLookupNames2 recupera gli identificatori di sicurezza (SID) per i nomi di account specificati. LsaLookupNames2 può cercare il SID per qualsiasi account in qualsiasi dominio in una foresta di Windows.

La funzione LsaLookupNames viene sostituita dalla funzione LsaLookupNames2 . Le applicazioni devono usare la funzione LsaLookupNames2 per garantire la compatibilità futura.

Questa funzione è diversa dalla funzione LsaLookupNames in quanto LsaLookupNames2 restituisce ogni SID come singolo elemento, mentre LsaLookupNames divide ogni SID in una coppia RID/dominio.

Sintassi

NTSTATUS LsaLookupNames2(
  [in]  LSA_HANDLE                  PolicyHandle,
  [in]  ULONG                       Flags,
  [in]  ULONG                       Count,
  [in]  PLSA_UNICODE_STRING         Names,
  [out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
  [out] PLSA_TRANSLATED_SID2        *Sids
);

Parametri

[in] PolicyHandle

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

[in] Flags

Valori che controllano il comportamento di questa funzione. Il valore seguente è attualmente definito.

Valore Significato
LSA_LOOKUP_ISOLATED_AS_LOCAL
0x80000000
La funzione cerca solo nei sistemi locali i nomi che non specificano un dominio. La funzione esegue la ricerca nei sistemi remoti per i nomi che specificano un dominio.

[in] Count

Specifica il numero di nomi nella matrice Names . Si tratta anche del numero di voci restituite nella matrice Sids .

[in] Names

Puntatore a una matrice di strutture LSA_UNICODE_STRING che contengono i nomi da cercare. Queste stringhe possono essere i nomi di account utente, gruppo o gruppo locale o i nomi dei domini. I nomi di dominio possono essere nomi di dominio DNS o nomi di dominio NetBIOS.

Per altre informazioni sul formato delle stringhe dei nomi, vedere Osservazioni.

[out] ReferencedDomains

Riceve 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 nome. Il membro DomainIndex di ogni voce nella matrice Sids è l'indice della voce della matrice Domains per il dominio in cui è stato trovato il nome.

Al termine dell'uso del puntatore restituito, liberarlo chiamando
Funzione 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] Sids

Riceve un puntatore a una matrice di strutture LSA_TRANSLATED_SID2 . Ogni voce nella matrice Sids contiene le informazioni SID per la voce corrispondente nella matrice Names .

Al termine dell'uso del puntatore restituito, liberarlo chiamando
Funzione 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, la funzione restituisce uno dei valori NTSTATUS seguenti.

Valore Descrizione
STATUS_SOME_NOT_MAPPED
Alcuni nomi non possono essere tradotti. Si tratta di un valore restituito a livello informativo.
STATUS_SUCCESS
Tutti i nomi sono stati trovati e tradotti correttamente.
 

Se la funzione ha esito negativo, il valore restituito è il seguente valore NTSTATUS o uno dei valori restituiti della funzione criteri LSA.

Valore Descrizione
STATUS_NONE_MAPPED
Nessuno dei nomi è stato tradotto.
 

Usare la funzione LsaNtStatusToWinError per convertire il codice NTSTATUS in un codice di errore di Windows.

Commenti

Usare nomi di account completi (ad esempio , NomeDominio\UserName) anziché nomi isolati (ad esempio , UserName). I nomi completi non sono ambigui e offrono prestazioni migliori quando viene eseguita la ricerca. Questa funzione supporta anche nomi DNS completi( ad esempio, esempio.Esempio.com\UserName) e nomi dell'entità utente (UPN) (ad esempio, Esempio di qualcuno@.com).

La traduzione dei nomi isolati introduce la possibilità di conflitti di nomi perché lo stesso nome può essere usato in più domini. La funzione LsaLookupNames2 usa l'algoritmo seguente per convertire i nomi isolati.

Per tradurre nomi isolati

  1. Se il nome è un nome noto, ad esempio Local o Interactive, la funzione restituisce l'identificatore di sicurezza noto corrispondente.
  2. Se il nome è il nome del dominio predefinito, la funzione restituisce il SID di tale dominio.
  3. Se il nome è il nome del dominio dell'account, la funzione restituisce il SID di tale dominio.
  4. Se il nome è il nome del dominio primario, la funzione restituisce il SID del dominio.
  5. Se il nome è uno dei nomi del dominio attendibile, la funzione restituisce il SID di tale dominio.
  6. Se il nome è un account utente, gruppo o gruppo locale nel dominio predefinito, la funzione restituisce il SID di tale account.
  7. Se il nome è un account utente, gruppo o gruppo locale nel dominio dell'account nel sistema locale, la funzione restituisce il SID di tale account.
  8. Se il nome è un utente, un gruppo o un gruppo locale nel dominio primario, la funzione restituisce il SID di tale account.
  9. Dopo aver cercato nel dominio primario, la funzione cerca in ognuno dei domini attendibili del dominio primario.
  10. In caso contrario, il nome non viene tradotto.

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_SID2

LSA_UNICODE_STRING

LsaFreeMemory