LsaLookupSids2 関数 (ntsecapi.h)

LsaLookupSids2 関数は、セキュリティ識別子 (SID) の配列に対応する名前を検索し、インターネット プロバイダー ID をサポートします。 LsaLookupSids2 で SID に対応する名前が見つからない場合、関数は SID を文字形式で返します。 LsaLookupSids 関数の代わりに、この関数を使用する必要があります。

構文

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

パラメーター

[in] PolicyHandle

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

[in] LookupOptions

参照動作を変更するフラグ。

意味
LSA_LOOKUP_DISALLOW_CONNECTED_ACCOUNT_INTERNET_SID
接続されたアカウントの ID プロバイダーからのインターネット SID は許可されません。 接続されているアカウントは、オンライン ID プロバイダーに接続されているローカル SAM データベースに対応するシャドウ アカウントを持つアカウントです。 たとえば、MicrosoftAccount は接続されているアカウントです。
LSA_LOOKUP_PREFER_INTERNET_NAMES
インターネット名を返します。 それ以外の場合は、NT4 スタイル名 (domain\username) が返されます。 例外は、Microsoft アカウント のインターネット SID が指定されている場合です。この場合、 LSA_LOOKUP_DISALLOW_NON_WINDOWS_INTERNET_SID が指定されていない限り、インターネット名が返されます。
LSA_LOOKUP_RETURN_LOCAL_NAMES
インターネット プロバイダー ID の場合でも、常にローカル SAM アカウント名を返します。

[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 エラー コードに変換できます。

注釈

フラグ LSA_LOOKUP_PREFER_INTERNET_NAMESは、MicrosoftAccount や Azure Active Directory アカウントなどのインターネット アカウントに使用する必要があります。 このフラグを指定すると、SID-Name 参照は MicrosoftAccount\ または AzureAD\ の形式でアカウントの UPN をfoo@outlook.com 返しますfoo@contoso.com。 Microsoft アカウントの場合、ローカル SAM SID とインターネット SID の両方で、このフラグが指定されている場合、UPN が返されます。 LSA_LOOKUP_PREFER_INTERNET_NAMESが指定されていない場合は、AAD アカウントに対して、AzureAD\foo 形式の NT4 スタイル名が返されます。 NT4 スタイル名はコンピューター固有であり、その使用法は慎重に評価する必要があり、可能であれば避ける必要があります。 MicrosoftAccounts の場合、LSA_LOOKUP_PREFER_INTERNET_NAMESが指定されていない場合、アカウントのローカル SID はローカル SAM 名に変換され、インターネット SID は UPN 名に変換されます。

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

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

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

要件

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

こちらもご覧ください

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_NAME

LsaOpenPolicy