LookupAccountSidA 関数 (winbase.h)

LookupAccountSid 関数は、入力としてセキュリティ識別子 (SID) を受け取ります。 この SID のアカウントの名前と、この SID が見つかった最初のドメインの名前を取得します。

構文

BOOL LookupAccountSidA(
  [in, optional]  LPCSTR        lpSystemName,
  [in]            PSID          Sid,
  [out, optional] LPSTR         Name,
  [in, out]       LPDWORD       cchName,
  [out, optional] LPSTR         ReferencedDomainName,
  [in, out]       LPDWORD       cchReferencedDomainName,
  [out]           PSID_NAME_USE peUse
);

パラメーター

[in, optional] lpSystemName

ターゲット コンピューターを指定する null で終わる文字列へのポインター。 この文字列には、リモート コンピューターの名前を使用できます。 このパラメーターが NULL の場合、アカウント名の変換はローカル システムで開始されます。 ローカル システムで名前を解決できない場合、この関数はローカル システムによって信頼されているドメイン コントローラーを使用して名前の解決を試みます。 通常、 lpSystemName の値は、アカウントが信頼されていないドメインにあり、そのドメイン内のコンピューターの名前がわかっている場合にのみ指定します。

[in] Sid

参照する SID へのポインター。

[out, optional] Name

lpSid パラメーターに対応するアカウント名を含む null で終わる文字列を受け取るバッファーへのポインター。

[in, out] cchName

入力時に、lpName バッファーのサイズを TCHARs で指定します。 バッファーが小さすぎるために関数が失敗した場合、または cchName が 0 の場合、 cchName は必要なバッファー サイズ (終端 の null 文字を含む) を受け取ります。

[out, optional] ReferencedDomainName

アカウント名が見つかったドメインの名前を含む null で終わる文字列を受け取るバッファーへのポインター。

サーバーでは、ローカル コンピューターのセキュリティ データベース内のほとんどのアカウントに対して返されるドメイン名は、サーバーがドメイン コントローラーであるドメインの名前です。

ワークステーションでは、ローカル コンピューターのセキュリティ データベース内のほとんどのアカウントに対して返されるドメイン名は、システムの最後の起動時のコンピューターの名前です (円記号は除外されます)。 コンピューターの名前が変更された場合、システムが再起動されるまで、古い名前はドメイン名として引き続き返されます。

一部のアカウントは、システムによって事前に定義されています。 これらのアカウントに返されるドメイン名は BUILTIN です。

[in, out] cchReferencedDomainName

入力時に、lpReferencedDomainName バッファーのサイズを TCHARs で指定します。 バッファーが小さすぎるために関数が失敗した場合、または cchReferencedDomainName が 0 の場合、 cchReferencedDomainName は必要なバッファー サイズ (終端 の null 文字を含む) を受け取ります。

[out] peUse

アカウントの種類を示す SID_NAME_USE 値を受け取る変数へのポインター。

戻り値

関数が成功した場合、関数は 0 以外の値を返します。

関数が失敗すると、0 が返されます。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

LookupAccountSid 関数は、最初に既知の SID の一覧を確認することで、指定された SID の名前を検索しようとします。 指定された SID が既知の SID に対応していない場合、関数は組み込みおよび管理上定義されたローカル アカウントをチェックします。 次に、この関数はプライマリ ドメインを確認します。 プライマリ ドメインで認識されないセキュリティ識別子は、SID プレフィックスに対応する信頼されたドメインに対してチェックされます。

関数が SID のアカウント名を見つけられない場合、 GetLastError は ERROR_NONE_MAPPEDを返します。 これは、ネットワークタイムアウトによって関数が名前を見つけることができない場合に発生する可能性があります。 また、対応するアカウント名がない SID (ログオン セッションを識別するログオン SID など) にも発生します。

LookupAccountSid は、ローカル アカウント、ローカル ドメイン アカウント、および明示的に信頼されたドメイン アカウントの SID を検索するだけでなく、フォレスト内のアカウントの SID フィールドにのみ表示される SID を含め、フォレスト内の任意のドメイン内の任意のアカウントの SID を検索できます。 SIDhistory フィールドには、別のドメインから移動されたアカウントの以前の SID が格納されます。 SID を検索するために、 LookupAccountSid はフォレストのグローバル カタログに対してクエリを実行します。

この関数を使用する例については、「 アクセス トークンでの SID の検索」を参照してください。

注意

winbase.h ヘッダーは LookupAccountSid をエイリアスとして定義します。このエイリアスは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

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

こちらもご覧ください

アクセス制御の概要

基本的なAccess Control関数

EqualPrefixSid

LookupAccountName

SID

SID_NAME_USE