次の方法で共有


LookupAccountSidW 関数 (winbase.h)

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

構文

BOOL LookupAccountSidW(
  [in, optional]  LPCWSTR       lpSystemName,
  [in]            PSID          Sid,
  [out, optional] LPWSTR        Name,
  [in, out]       LPDWORD       cchName,
  [out, optional] LPWSTR        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 の検索」を参照してください。

Note

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

要件

   
サポートされている最小のクライアント 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