次の方法で共有


GetUserNameA 関数 (winbase.h)

現在のスレッドに関連付けられているユーザーの名前を取得します。

GetUserNameEx 関数を使用して、指定した形式でユーザー名を取得します。 追加情報は 、IADsADSystemInfo インターフェイスによって提供されます。

構文

BOOL GetUserNameA(
  [out]     LPSTR   lpBuffer,
  [in, out] LPDWORD pcbBuffer
);

パラメーター

[out] lpBuffer

ユーザーのログオン名を受け取るバッファーへのポインター。 このバッファーがユーザー名全体を格納するのに十分な大きさでない場合、関数は失敗します。 バッファー サイズが (UNLEN + 1) 文字の場合、終端の null 文字を含む最大長のユーザー名が保持されます。 UNLEN は Lmcons.h で定義されています。

[in, out] pcbBuffer

入力時に、この変数は LPBuffer バッファーのサイズを TCHAR で指定します。 出力時に、変数はバッファーにコピーされた TCHAR の数 (終端の null 文字を含む) を受け取ります。

lpBuffer が小さすぎると、関数は失敗し、GetLastError はERROR_INSUFFICIENT_BUFFERを返します。 このパラメーターは、終端の null 文字を含め、必要なバッファー サイズを受け取ります。

戻り値

関数が成功した場合、戻り値は 0 以外の値であり、lpnSize によって指される変数には、lpBuffer によって指定されたバッファーにコピーされた TCHAR の数が含まれます (終端の null 文字を含む)。

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

解説

現在のスレッドが別のクライアントを偽装している場合、 GetUserName 関数は、スレッドが偽装しているクライアントのユーザー名を返します。

"NETWORK SERVICE" アカウントで実行されているプロセスから GetUserName が呼び出された場合、 lpBuffer で返される文字列は Windows のバージョンによって異なる場合があります。 Windows XP では、"NETWORK SERVICE" 文字列が返されます。 Windows Vista では、"<HOSTNAME>$" 文字列が返されます。

例については、「 システム情報の取得」を参照してください。

注意

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

要件

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

こちらもご覧ください

GetUserNameEx

LookupAccountName

システム情報関数