Freigeben über


LsaLookupNames2-Funktion (ntsecapi.h)

Die LsaLookupNames2-Funktion ruft die Sicherheits-IDs (SIDs) für die angegebenen Kontonamen ab. LsaLookupNames2 kann die SID für jedes Konto in einer Beliebigen Domäne in einer Windows-Gesamtstruktur suchen.

Die LsaLookupNames-Funktion wird durch die Funktion LsaLookupNames2 ersetzt. Anwendungen sollten die LsaLookupNames2-Funktion verwenden, um zukünftige Kompatibilität sicherzustellen.

Diese Funktion unterscheidet sich von der LsaLookupNames-Funktion darin, dass LsaLookupNames2 jede SID als einzelnes Element zurückgibt, während LsaLookupNames jede SID in ein RID/Domänenpaar unterteilt.

Syntax

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
);

Parameter

[in] PolicyHandle

Ein Handle für ein Policy-Objekt . Das Handle muss über das zugriffsrecht POLICY_LOOKUP_NAMES verfügen. Weitere Informationen finden Sie unter Öffnen eines Richtlinienobjekthandles.

[in] Flags

Werte, die das Verhalten dieser Funktion steuern. Der folgende Wert ist derzeit definiert.

Wert Bedeutung
LSA_LOOKUP_ISOLATED_AS_LOCAL
0x80000000
Die Funktion sucht nur in den lokalen Systemen nach Namen, die keine Domäne angeben. Die Funktion sucht in Remotesystemen nach Namen, die eine Domäne angeben.

[in] Count

Gibt die Anzahl der Namen im Array Namen an. Dies ist auch die Anzahl der Einträge, die im Sids-Array zurückgegeben werden.

[in] Names

Zeiger auf ein Array von LSA_UNICODE_STRING Strukturen, die die nachzuschlagenden Namen enthalten. Diese Zeichenfolgen können die Namen von Benutzer-, Gruppen- oder lokalen Gruppenkonten oder domänennamen sein. Domänennamen können DNS-Domänennamen oder NetBIOS-Domänennamen sein.

Weitere Informationen zum Format der Namenszeichenfolgen finden Sie unter Hinweise.

[out] ReferencedDomains

Empfängt einen Zeiger auf eine LSA_REFERENCED_DOMAIN_LIST-Struktur . Das Domänenmitglied dieser Struktur ist ein Array, das einen Eintrag für jede Domäne enthält, in der ein Name gefunden wurde. Das DomainIndex-Element jedes Eintrags im Sids-Array ist der Index des Domänenarrayeintrags für die Domäne, in der der Name gefunden wurde.

Wenn Sie die Verwendung des zurückgegebenen Zeigers abgeschlossen haben, geben Sie ihn frei, indem Sie die
LsaFreeMemory-Funktion . Dieser Arbeitsspeicher muss freigegeben werden, auch wenn die Funktion mit einem der Fehlercodes STATUS_NONE_MAPPED oder STATUS_SOME_NOT_MAPPED

[out] Sids

Empfängt einen Zeiger auf ein Array von LSA_TRANSLATED_SID2 Strukturen. Jeder Eintrag im Sids-Array enthält die SID-Informationen für den entsprechenden Eintrag im Names-Array .

Wenn Sie die Verwendung des zurückgegebenen Zeigers abgeschlossen haben, geben Sie ihn frei, indem Sie die
LsaFreeMemory-Funktion . Dieser Arbeitsspeicher muss freigegeben werden, auch wenn die Funktion mit einem der Fehlercodes STATUS_NONE_MAPPED oder STATUS_SOME_NOT_MAPPED

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt die Funktion einen der folgenden NTSTATUS-Werte zurück.

Wert BESCHREIBUNG
STATUS_SOME_NOT_MAPPED
Einige der Namen konnten nicht übersetzt werden. Dies ist ein Rückgabewert auf Informationsebene.
STATUS_SUCCESS
Alle Namen wurden gefunden und erfolgreich übersetzt.
 

Wenn die Funktion fehlschlägt, ist der Rückgabewert der folgende NTSTATUS-Wert oder einer der Rückgabewerte der LSA-Richtlinienfunktion.

Wert BESCHREIBUNG
STATUS_NONE_MAPPED
Keiner der Namen wurde übersetzt.
 

Verwenden Sie die LsaNtStatusToWinError-Funktion , um den NTSTATUS-Code in einen Windows-Fehlercode zu konvertieren.

Hinweise

Verwenden Sie vollqualifizierte Kontonamen (z. B. DomainName\UserName) anstelle von isolierten Namen (z. B. UserName). Vollqualifizierte Namen sind eindeutig und bieten eine bessere Leistung, wenn die Suche durchgeführt wird. Diese Funktion unterstützt auch vollqualifizierte DNS-Namen (z. B. Beispiel).Beispiel.com\Benutzername) und Benutzerprinzipalnamen (UPN) (z. B.Jemandsbeispiel@.com).

Die Übersetzung isolierter Namen führt zu Namenskonflikten, da derselbe Name in mehreren Domänen verwendet werden kann. Die LsaLookupNames2-Funktion verwendet den folgenden Algorithmus, um isolierte Namen zu übersetzen.

So übersetzen Sie isolierte Namen

  1. Wenn der Name ein bekannter Name ist, z. B. Lokal oder Interaktiv, gibt die Funktion den entsprechenden bekannten Sicherheitsbezeichner (SID) zurück.
  2. Wenn der Name der integrierten Domäne ist, gibt die Funktion die SID dieser Domäne zurück.
  3. Wenn der Name der Kontodomäne ist, gibt die Funktion die SID dieser Domäne zurück.
  4. Wenn der Name der Name der primären Domäne ist, gibt die Funktion die SID dieser Domäne zurück.
  5. Wenn der Name einer der Namen der vertrauenswürdigen Domäne ist, gibt die Funktion die SID dieser Domäne zurück.
  6. Wenn der Name ein Benutzer-, Gruppen- oder lokales Gruppenkonto in der integrierten Domäne ist, gibt die Funktion die SID dieses Kontos zurück.
  7. Wenn der Name ein Benutzer-, Gruppen- oder lokales Gruppenkonto in der Kontodomäne auf dem lokalen System ist, gibt die Funktion die SID dieses Kontos zurück.
  8. Wenn der Name ein Benutzer, eine Gruppe oder eine lokale Gruppe in der primären Domäne ist, gibt die Funktion die SID dieses Kontos zurück.
  9. Nach der Suche in der primären Domäne sucht die Funktion in jeder der vertrauenswürdigen Domänen der primären Domäne.
  10. Andernfalls wird der Name nicht übersetzt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile ntsecapi.h
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_SID2

LSA_UNICODE_STRING

LsaFreeMemory