次の方法で共有


ユーザーのフル ネームを調べること

コンピューターは、コンピューター ネットワークのコレクションである ドメインに編成できます。 ドメイン管理者は、一元化されたユーザーとグループのアカウント情報を保持します。

ユーザーの完全な名前を見つけるには、ユーザー名とドメイン名を指定します。

  • まだ Unicode 文字列でない場合は、ユーザー名とドメイン名を Unicode に変換します。
  • NetGetDCName を呼び出して、ドメイン コントローラー (DC) のコンピューター名を検索します。
  • NetUserGetInfo を呼び出して、DC コンピューターのユーザー名を検索します。
  • プログラムが Unicode 文字列で動作することを想定していない限り、完全なユーザー名を ANSI に変換します。

次のサンプル コードは、最初の 2 つの引数でユーザー名とドメイン名を受け取り、3 番目の引数でユーザーの完全な名前を返す関数 (GetFullName) です。

#include <windows.h>
#include <lm.h>
#include <stdio.h>

#pragma comment(lib, "netapi32.lib")

BOOL GetFullName( char *UserName, char *Domain, char *dest )
{
    WCHAR wszUserName[UNLEN+1];          // Unicode user name
    WCHAR wszDomain[256]; 
    LPBYTE ComputerName;
    
//    struct _SERVER_INFO_100 *si100;  // Server structure
    struct _USER_INFO_2 *ui;         // User structure

// Convert ANSI user name and domain to Unicode

    MultiByteToWideChar( CP_ACP, 0, UserName,
        (int) strlen(UserName)+1, wszUserName, 
        sizeof(wszUserName)/sizeof(WCHAR) );

    MultiByteToWideChar( CP_ACP, 0, Domain,
        (int) strlen(Domain)+1, wszDomain, 
        sizeof(wszDomain)/sizeof(WCHAR) );

// Get the computer name of a DC for the domain.

    NetGetDCName( NULL, wszDomain, &ComputerName );

// Look up the user on the DC.

    if( NetUserGetInfo( (LPWSTR) ComputerName,
        (LPWSTR) &wszUserName, 2, (LPBYTE *) &ui ) )
    {
        wprintf( L"Error getting user information.\n" );
        return( FALSE );
    }

// Convert the Unicode full name to ANSI.

    WideCharToMultiByte( CP_ACP, 0, ui->usri2_full_name, -1,
        dest, 256, NULL, NULL );

    return (TRUE);
}