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
この関数の動作を制御する値。 現在、次の値が定義されています。
値 | 意味 |
---|---|
|
この関数は、ドメインを指定しない名前をローカル システムでのみ検索します。 この関数は、ドメインを指定する名前をリモート システムで検索します。 |
[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 値を返します。
値 | 説明 |
---|---|
|
一部の名前を翻訳できませんでした。 これは情報レベルの戻り値です。 |
|
すべての名前が見つかり、正常に翻訳されました。 |
関数が失敗した場合、戻り値は次の NTSTATUS 値または LSA ポリシー関数の戻り値のいずれかになります。
値 | 説明 |
---|---|
|
どの名前も翻訳されませんでした。 |
LsaNtStatusToWinError 関数を使用して、NTSTATUS コードを Windows エラー コードに変換します。
注釈
分離名 (UserName など) ではなく、完全修飾アカウント名 (DomainName\UserName など) を使用します。 完全修飾名は明確であり、検索を実行するとパフォーマンスが向上します。 この関数は、完全修飾 DNS 名 (例: ) もサポートしています。例.com\UserName) とユーザー プリンシパル名 (UPN) (例: Someone@Example.com)。
分離された名前を変換すると、同じ名前が複数のドメインで使用される可能性があるため、名前の競合が発生する可能性があります。 LsaLookupNames2 関数は、次のアルゴリズムを使用して分離名を変換します。
分離名を変換するには
- 名前が Local や Interactive などの既知の名前の場合、関数は対応する既知の セキュリティ識別子 (SID) を返します。
- 名前が組み込みドメインの名前である場合、関数はそのドメインの SID を返します。
- 名前がアカウント ドメインの名前の場合、関数はそのドメインの SID を返します。
- 名前がプライマリ ドメインの名前の場合、関数はそのドメインの SID を返します。
- 名前が信頼されたドメインの名前の 1 つである場合、関数はそのドメインの SID を返します。
- 名前が組み込みドメインのユーザー、グループ、またはローカル グループ アカウントである場合、関数はそのアカウントの SID を返します。
- 名前がローカル システムのアカウント ドメイン内のユーザー、グループ、またはローカル グループ アカウントである場合、関数はそのアカウントの SID を返します。
- 名前がプライマリ ドメイン内のユーザー、グループ、またはローカル グループである場合、関数はそのアカウントの SID を返します。
- プライマリ ドメインを確認した後、関数はプライマリ ドメインの信頼された各ドメインを検索します。
- それ以外の場合、名前は変換されません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | ntsecapi.h |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |