LsaLookupSids 関数 (ntsecapi.h)

[LsaLookupSids は、[要件] セクションで指定したオペレーティング システムで使用できます。 今後のバージョンでは変更されるか、利用できなくなる場合もあります。 代わりに、 LsaLookupSids2 を使用します。

LsaLookupSids 関数は、セキュリティ識別子 (SID) の配列に対応する名前を検索します。 LsaLookupSids が SID に対応する名前を見つけられない場合、この関数は SID を文字形式で返します。

構文

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

パラメーター

[in] PolicyHandle

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

[in] Count

Sids 配列内の SID の数を指定します。 これは、 Names 配列で返されるエントリの数でもあります。 この値は 20480 以下である必要があります。

[in] Sids

参照する SID ポインターの配列へのポインター。 SID には、既知の SID、ユーザー、グループ、またはローカル グループ アカウント SID、またはドメイン SID を指定できます。

[out] ReferencedDomains

LSA_REFERENCED_DOMAIN_LIST構造体へのポインターへのポインターを受け取ります。 この構造体の Domains メンバーは、SID が見つかった各ドメインのエントリを含む配列です。 各ドメインのエントリには、ドメインの SID とフラット名が含まれています。 Windows ドメインの場合、フラット名は NetBIOS 名です。 Windows 以外のドメインを持つリンクの場合、フラット名はそのドメインの識別名、または NULL です

情報が不要になったら、返されたポインターを LsaFreeMemory に渡します。 このメモリは、STATUS_NONE_MAPPEDまたはSTATUS_SOME_NOT_MAPPEDのいずれかのエラー コードで関数が失敗した場合でも解放する必要があります

[out] Names

LSA_TRANSLATED_NAME構造体の配列へのポインターを受け取ります。 Names 配列の各エントリには、Sids 配列内の対応するエントリの名前情報が含まれています。 アカウント SID の場合、各構造体の Name メンバーには、アカウントの分離名が含まれます。 ドメイン SID の場合、 Name メンバーは無効です。

Names 配列の各エントリの DomainIndex メンバーは、ReferencedDomains パラメーターで返される Domains 配列内のエントリのインデックスです。 インデックスは、SID が見つかったドメインの Domains 配列を識別します。

情報が不要になったら、返されたポインターを LsaFreeMemory に渡します。 このメモリは、STATUS_NONE_MAPPEDまたはSTATUS_SOME_NOT_MAPPEDのいずれかのエラー コードで関数が失敗した場合でも解放する必要があります

戻り値

関数が成功した場合、戻り値は次のいずれかの NTSTATUS 値になります。

リターン コード 説明
STATUS_SOME_NOT_MAPPED
SID の一部を変換できませんでした。 これは情報レベルの戻り値です。
STATUS_SUCCESS
すべての SID が見つかり、正常に翻訳されました。
 

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

リターン コード 説明
STATUS_NONE_MAPPED
変換された SID はありません。 これはエラー レベルの戻り値です。
STATUS_TOO_MANY_SIDS
Sids 配列パラメーターが大きすぎます。
 

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

注釈

アカウント SID の場合、 Name メンバーで返される文字列は、アカウントの分離名 (user_name など) です。 アカウントの複合名 (Acctg\user_name など) が必要な場合は、 ReferencedDomains バッファーからドメイン名を取得し、円記号と分離名を追加します。

LsaLookupSids 関数が SID を変換できない場合、関数は次のアルゴリズムを使用します。

  1. SID のドメインが既知の場合、 ReferencedDomains バッファーにはドメインのエントリが含まれており、 Names パラメーターで返される文字列は、SID からのアカウントの相対識別子 (RID) の Unicode 表現です。
  2. SID のドメインが不明な場合、 Names パラメーターで返される文字列は SID 全体の Unicode 表現であり、 ReferencedDomains バッファーにはこの SID のドメイン レコードがありません。
LsaLookupSids は、ローカル アカウント、ローカル ドメイン アカウント、明示的に信頼されたドメイン アカウントの SID を検索するだけでなく、Windows フォレスト内の任意のドメイン内の任意のアカウント (フォレスト内のアカウントの SID にのみ表示される SID を含む) の SID を検索できます。 SIDhistory フィールドには、別のドメインから移動されたアカウントの以前の SID が格納されます。 これらの検索を実行するために、関数はフォレストのグローバル カタログに対してクエリを実行します。

要件

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

こちらもご覧ください

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_NAME

LsaOpenPolicy