LsaLookupNames2 関数 (ntsecapi.h)

LsaLookupNames2 関数は、指定されたアカウント名のセキュリティ識別子 (SID) を取得します。 LsaLookupNames2 は、Windows フォレスト内の任意のドメイン内の任意のアカウントの SID を検索できます。

LsaLookupNames 関数は LsaLookupNames2 関数に置き換えられます。 アプリケーションでは、今後の互換性を確保するために LsaLookupNames2 関数を使用する必要があります。

この関数は LsaLookupNames 関数とは異なり、 LsaLookupNames2 は各 SID を 1 つの要素として返し、 LsaLookupNames は各 SID を RID/ドメイン ペアに分割します。

構文

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

パラメーター

[in] PolicyHandle

Policy オブジェクトへのハンドル。 ハンドルには、POLICY_LOOKUP_NAMESアクセス権が必要です。 詳細については、「 ポリシー オブジェクト ハンドルを開く」を参照してください。

[in] Flags

この関数の動作を制御する値。 現在、次の値が定義されています。

意味
LSA_LOOKUP_ISOLATED_AS_LOCAL
0x80000000
この関数は、ドメインを指定しない名前をローカル システムでのみ検索します。 この関数は、ドメインを指定する名前をリモート システムで検索します。

[in] Count

Names 配列内の名前の数を指定 します 。 これは Sids 配列で返されるエントリの数でもあります。

[in] Names

参照する名前を含む LSA_UNICODE_STRING 構造体の配列へのポインター。 これらの文字列には、ユーザー、グループ、またはローカル グループ アカウントの名前、またはドメインの名前を指定できます。 ドメイン名には、DNS ドメイン名または NetBIOS ドメイン名を指定できます。

名前文字列の形式の詳細については、「解説」を参照してください。

[out] ReferencedDomains

LSA_REFERENCED_DOMAIN_LIST構造体へのポインターを受け取ります。 この構造体の Domains メンバーは、名前が見つかった各ドメインのエントリを含む配列です。 Sids 配列内の各エントリの DomainIndex メンバーは、名前が見つかったドメインの Domains 配列エントリのインデックスです。

返されたポインターの使用が完了したら、 を呼び出して解放します。
LsaFreeMemory 関数。 このメモリは、STATUS_NONE_MAPPEDまたはSTATUS_SOME_NOT_MAPPEDのいずれかのエラー コードで関数が失敗した場合でも解放する必要があります

[out] Sids

LSA_TRANSLATED_SID2構造体の配列へのポインターを受け取ります。 Sids 配列の各エントリには、Names 配列内の対応するエントリの SID 情報が含まれています。

返されたポインターの使用が完了したら、 を呼び出して解放します。
LsaFreeMemory 関数。 このメモリは、STATUS_NONE_MAPPEDまたはSTATUS_SOME_NOT_MAPPEDのいずれかのエラー コードで関数が失敗した場合でも解放する必要があります

戻り値

関数が成功した場合、関数は次のいずれかの NTSTATUS 値を返します。

説明
STATUS_SOME_NOT_MAPPED
一部の名前を翻訳できませんでした。 これは情報レベルの戻り値です。
STATUS_SUCCESS
すべての名前が見つかり、正常に翻訳されました。
 

関数が失敗した場合、戻り値は次の NTSTATUS 値または LSA ポリシー関数の戻り値のいずれかになります

説明
STATUS_NONE_MAPPED
どの名前も翻訳されませんでした。
 

LsaNtStatusToWinError 関数を使用して、NTSTATUS コードを Windows エラー コードに変換します。

注釈

分離名 (UserName など) ではなく、完全修飾アカウント名 (DomainName\UserName など) を使用します。 完全修飾名は明確であり、検索を実行するとパフォーマンスが向上します。 この関数は、完全修飾 DNS 名 (例: ) もサポートしています。.com\UserName) とユーザー プリンシパル名 (UPN) (例: Someone@Example.com)。

分離された名前を変換すると、同じ名前が複数のドメインで使用される可能性があるため、名前の競合が発生する可能性があります。 LsaLookupNames2 関数は、次のアルゴリズムを使用して分離名を変換します。

分離名を変換するには

  1. 名前が Local や Interactive などの既知の名前の場合、関数は対応する既知の セキュリティ識別子 (SID) を返します。
  2. 名前が組み込みドメインの名前である場合、関数はそのドメインの SID を返します。
  3. 名前がアカウント ドメインの名前の場合、関数はそのドメインの SID を返します。
  4. 名前がプライマリ ドメインの名前の場合、関数はそのドメインの SID を返します。
  5. 名前が信頼されたドメインの名前の 1 つである場合、関数はそのドメインの SID を返します。
  6. 名前が組み込みドメインのユーザー、グループ、またはローカル グループ アカウントである場合、関数はそのアカウントの SID を返します。
  7. 名前がローカル システムのアカウント ドメイン内のユーザー、グループ、またはローカル グループ アカウントである場合、関数はそのアカウントの SID を返します。
  8. 名前がプライマリ ドメイン内のユーザー、グループ、またはローカル グループである場合、関数はそのアカウントの SID を返します。
  9. プライマリ ドメインを確認した後、関数はプライマリ ドメインの信頼された各ドメインを検索します。
  10. それ以外の場合、名前は変換されません。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー ntsecapi.h
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_SID2

LSA_UNICODE_STRING

LsaFreeMemory