LsaLookupSids-Funktion (ntsecapi.h)

[LsaLookupSids ist für die Verwendung in den im Abschnitt Anforderungen angegebenen Betriebssystemen verfügbar. Es kann in nachfolgenden Versionen geändert oder entfernt werden. Verwenden Sie stattdessen LsaLookupSids2.]

Die LsaLookupSids-Funktion sucht die Namen, die einem Array von Sicherheitsbezeichnern (SIDs) entsprechen. Wenn LsaLookupSids keinen Namen finden kann, der einer SID entspricht, gibt die Funktion die SID in Zeichenform zurück.

Syntax

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

Parameter

[in] PolicyHandle

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

[in] Count

Gibt die Anzahl der SIDs im Sids-Array an. Dies ist auch die Anzahl der Einträge, die im Names-Array zurückgegeben werden. Dieser Wert muss kleiner oder gleich 20480 sein.

[in] Sids

Zeiger auf ein Array von SID-Zeigern, die gesucht werden sollen. Die SIDs können bekannte SIDs, Benutzer-, Gruppen- oder lokale Gruppenkonto-SIDs oder Domänen-SIDs sein.

[out] ReferencedDomains

Empfängt einen Zeiger auf einen Zeiger auf eine LSA_REFERENCED_DOMAIN_LIST-Struktur . Das Domänenelement dieser Struktur ist ein Array, das einen Eintrag für jede Domäne enthält, in der eine SID gefunden wurde. Der Eintrag für jede Domäne enthält die SID und den Flachnamen der Domäne. Bei Windows-Domänen ist der Flatname der NetBIOS-Name. Bei Links mit Nicht-Windows-Domänen ist der Flatname der identifizierende Name dieser Domäne oder NULL.

Wenn Sie die Informationen nicht mehr benötigen, übergeben Sie den zurückgegebenen Zeiger an LsaFreeMemory. Dieser Arbeitsspeicher muss freigegeben werden, auch wenn die Funktion mit einem der Fehlercodes STATUS_NONE_MAPPED oder STATUS_SOME_NOT_MAPPED

[out] Names

Empfängt einen Zeiger auf ein Array von LSA_TRANSLATED_NAME Strukturen. Jeder Eintrag im Array Names enthält die Namensinformationen für den entsprechenden Eintrag im Sids-Array . Bei Konto-SIDs enthält der Name-Member jeder Struktur den isolierten Namen des Kontos. Für Domänen-SIDs ist das Namenselement ungültig.

Das DomainIndex-Element jedes Eintrags im Names-Array ist der Index eines Eintrags im Domänenarray , der im Parameter ReferencedDomains zurückgegeben wird. Der Index identifiziert das Domänenarray für die Domäne, in der die SID gefunden wurde.

Wenn Sie die Informationen nicht mehr benötigen, übergeben Sie den zurückgegebenen Zeiger an LsaFreeMemory. 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, ist der Rückgabewert einer der folgenden NTSTATUS-Werte .

Rückgabecode Beschreibung
STATUS_SOME_NOT_MAPPED
Einige der SIDs konnten nicht übersetzt werden. Dies ist ein Rückgabewert auf Informationsebene.
STATUS_SUCCESS
Alle SIDs wurden gefunden und erfolgreich übersetzt.
 

Wenn die Funktion fehlschlägt, ist der Rückgabewert ein NTSTATUS-Code , der einer der folgenden Werte oder einer der Rückgabewerte der LSA-Richtlinienfunktion sein kann.

Rückgabecode Beschreibung
STATUS_NONE_MAPPED
Keine der SIDs wurde übersetzt. Dies ist ein Rückgabewert auf Fehlerebene.
STATUS_TOO_MANY_SIDS
Der Sids-Arrayparameter war zu groß.
 

Sie können die LsaNtStatusToWinError-Funktion verwenden, um den NTSTATUS-Code in einen Windows-Fehlercode zu konvertieren.

Hinweise

Bei Konto-SIDs ist die im Member Name zurückgegebene Zeichenfolge der isolierte Name des Kontos (z. B. user_name). Wenn Sie den zusammengesetzten Namen des Kontos benötigen (z. B. Acctg\user_name), rufen Sie den Domänennamen aus dem Puffer ReferencedDomains ab, und fügen Sie einen umgekehrten Schrägstrich und den isolierten Namen an.

Wenn die LsaLookupSids-Funktion eine SID nicht übersetzen kann, verwendet die Funktion den folgenden Algorithmus:

  1. Wenn die Domäne der SID bekannt ist, enthält der ReferencedDomains-Puffer einen Eintrag für die Domäne, und die im Names-Parameter zurückgegebene Zeichenfolge ist eine Unicode-Darstellung des relativen Bezeichners (RID) des Kontos aus der SID.
  2. Wenn die Domäne der SID nicht bekannt ist, ist die im Names-Parameter zurückgegebene Zeichenfolge eine Unicode-Darstellung der gesamten SID, und es gibt keinen Domäneneintrag für diese SID im Puffer ReferencedDomains .
Zusätzlich zur Suche nach SIDs für lokale Konten, lokale Domänenkonten und explizit vertrauenswürdige Domänenkonten können LsaLookupSids siDs für jedes Konto in einer beliebigen Domäne in der Windows-Gesamtstruktur suchen, einschließlich SIDs, die nur im SiDhistory-Feld eines Kontos in der Gesamtstruktur angezeigt werden. Im Feld SIDhistory werden die ehemaligen SIDs eines Kontos gespeichert, das aus einer anderen Domäne verschoben wurde. Um diese Suchvorgänge auszuführen, fragt die Funktion den globalen Katalog der Gesamtstruktur ab.

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_NAME

LsaOpenPolicy