Freigeben über


LsaLookupSids2-Funktion (ntsecapi.h)

Die LsaLookupSids2-Funktion sucht die Namen, die einem Array von Sicherheitsbezeichnern (SIDs) entsprechen, und unterstützt Internetanbieteridentitäten. Wenn LsaLookupSids2 keinen Namen finden kann, der einer SID entspricht, gibt die Funktion die SID in Zeichenform zurück. Sie sollten diese Funktion anstelle der LsaLookupSids-Funktion verwenden.

Syntax

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

Parameter

[in] PolicyHandle

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

[in] LookupOptions

Flags, die das Nachschlageverhalten ändern.

Wert Bedeutung
LSA_LOOKUP_DISALLOW_CONNECTED_ACCOUNT_INTERNET_SID
Internet-SIDs von Identitätsanbietern für verbundene Konten sind nicht zulässig. Verbundene Konten sind Konten, die über ein entsprechendes Schattenkonto in der lokalen SAM-Datenbank verfügen, die mit einem Onlineidentitätsanbieter verbunden sind. MicrosoftAccount ist beispielsweise ein verbundenes Konto.
LSA_LOOKUP_PREFER_INTERNET_NAMES
Gibt die Internetnamen zurück. Andernfalls wird der NT4-Formatname (Domäne\Benutzername) zurückgegeben. Die Ausnahme ist, wenn die Internet-SID des Microsoft-Kontos angegeben wird. In diesem Fall wird der Internetname zurückgegeben, es sei denn , es wird LSA_LOOKUP_DISALLOW_NON_WINDOWS_INTERNET_SID angegeben.
LSA_LOOKUP_RETURN_LOCAL_NAMES
Gibt immer lokale SAM-Kontonamen zurück, auch für Internetanbieteridentitäten.

[in] Count

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

[in] Sids

Zeiger auf ein Array von SID-Zeigern, um nachzuschlagen. 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änenmitglied 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 flachen Namen 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 auch dann freigegeben werden, 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 Namen enthält die Namensinformationen für den entsprechenden Eintrag im Sids-Array . Bei Konto-SIDs enthält das Namenselement jeder Struktur den isolierten Namen des Kontos. Für Domänen-SIDs ist das Namenselement ungültig.

Das DomainIndex-Element jedes Eintrags im Array Names 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 auch dann freigegeben werden, 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

Das Flag LSA_LOOKUP_PREFER_INTERNET_NAMES sollte für Internetkonten wie MicrosoftAccount und Azure Active Directory-Konten verwendet werden. Wenn dieses Flag angegeben wird, gibt SID-Name Lookup den UPN des Kontos im Format MicrosoftAccount\foo@outlook.com oder AzureAD\foo@contoso.com zurück. Für Microsoft-Konten führen sowohl die lokale SAM-SID als auch die Internet-SID dazu, dass der UPN zurückgegeben wird, wenn dieses Flag angegeben ist. Wenn LSA_LOOKUP_PREFER_INTERNET_NAMES nicht angegeben wird, wird für AAD-Konten der NT4-Formatname des Formulars AzureAD\foo zurückgegeben. Der NT4-Formatname ist computerspezifisch, und seine Verwendung sollte sorgfältig bewertet und nach Möglichkeit vermieden werden. Wenn für MicrosoftAccounts LSA_LOOKUP_PREFER_INTERNET_NAMES nicht angegeben ist, wird die lokale SID des Kontos in den lokalen SAM-Namen übersetzt, und die Internet-SID wird in den UPN-Namen übersetzt.

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 LsaLookupSids2-Funktion keine SID übersetzen kann, verwendet die Funktion den folgenden Algorithmus:

  1. Wenn die Domäne der SID bekannt ist, enthält der Puffer ReferencedDomains 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 Parameter Names zurückgegebene Zeichenfolge eine Unicode-Darstellung der gesamten SID, und es gibt keinen Domäneneintrag für diese SID im Puffer ReferencedDomains .
Neben der Suche nach SIDs nach lokalen Konten, lokalen Domänenkonten und explizit vertrauenswürdigen Domänenkonten kann LsaLookupSids2 SIDs für jedes Konto in jeder 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. Zum Ausführen dieser Suchvorgänge fragt die Funktion den globalen Katalog der Gesamtstruktur ab.

Anforderungen

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

Weitere Informationen

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_NAME

LsaOpenPolicy