HOWTO: Look Up a User's Full Name
ID: Q119670
|
The information in this article applies to:
-
Microsoft Win32 Software Development Kit (SDK), used with:
-
Microsoft Windows NT versions 3.1, 3.5
-
Microsoft Windows 2000
SUMMARY
Windows NT workstations can be organized into a domain, which is a
collection of computers on a Windows NT Advanced Server network. The domain
administrator maintains centralized user and group account information.
MORE INFORMATION
To find the full name of a user if you have the user name and domain name:
- Convert the user name and domain name to Unicode, if they are not
already Unicode strings. This is a requirement of the ported LAN
Manager APIs that are used in the following steps.
- Look up the name of the domain controller (DC) for the domain name
by calling NetServerEnum().
- Look up the user name by calling NetUserGetInfo()
- Convert the full user name to ANSI, unless the program is expecting
to work with Unicode strings.
The sample code below is a function that takes a user name and a domain
name as the first two arguments and returns the user's full name in the
third argument.
For information on how to get the current user and domain, please see the
following article in the Microsoft Knowledge Base:
Q111544
Looking Up the Current User and Domain
Sample Code
#include <windows.h>
#include <lm.h>
#include <stdio.h>
/********************************************************************\
* Function: GetFullName( char *UserName, char *Domain, char *dest ); *
* *
* Parameters: *
* UserName: the user name *
* Domain : the domain to which the user belongs *
* dest : receives the user's full name *
* *
\********************************************************************/
BOOL GetFullName(char *UserName, char *Domain, char *dest)
{
WCHAR wszUserName[256]; // Unicode user name
WCHAR wszDomain[256];
LPBYTE ComputerName;
struct _SERVER_INFO_100 *si100; // Server structure
struct _USER_INFO_2 *ui; // User structure
// Convert ASCII user name and domain to Unicode.
MultiByteToWideChar( CP_ACP, 0, UserName,
strlen(UserName)+1, wszUserName, sizeof(wszUserName) );
MultiByteToWideChar( CP_ACP, 0, Domain,
strlen(Domain)+1, wszDomain, sizeof(wszDomain) );
// Get the computer name of a DC for the specified domain.
NetGetDCName( NULL, wszDomain, &ComputerName );
// Look up the user on the DC.
if(NetUserGetInfo( (LPWSTR) ComputerName,
(LPWSTR) &wszUserName, 2, (LPBYTE *) &ui))
{
printf( "Error getting user information.\n" );
return( FALSE );
}
// Convert the Unicode full name to ASCII.
WideCharToMultiByte( CP_ACP, 0, ui->usri2_full_name,
-1, dest, 256, NULL, NULL );
return( TRUE );
}
Additional query words:
Keywords : kbnetwork kbAPI kbKernBase kbNTOS310 kbNTOS350 kbWinOS2000 kbSDKPlatform kbNetAPI kbDSupport kbGrpNet kbGrpKernBase
Version : WINDOWS:
Platform : WINDOWS
Issue type : kbhowto