次の方法で共有


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 がゼロ 場合、cchName は、終端 null 文字を含む、必要なバッファー サイズを受け取ります。

[out, optional] ReferencedDomainName

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

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

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

一部のアカウントはシステムによって事前に定義されています。 これらのアカウントに対して返されるドメイン名は 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 についても発生します。

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

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

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winbase.h (Windows.h を含む)
ライブラリ Advapi32.lib
DLL Advapi32.dll

関連項目

アクセス制御の概要

基本的なアクセス制御関数の

EqualPrefixSid を する

LookupAccountName

SID の

SID_NAME_USE