Mencari Nama Lengkap Pengguna
Komputer dapat diatur ke dalam domain, yang merupakan kumpulan jaringan komputer. Administrator domain mempertahankan informasi akun pengguna dan grup terpusat.
Untuk menemukan nama lengkap pengguna, dengan nama pengguna dan nama domain:
- Konversikan nama pengguna dan nama domain ke Unicode, jika mereka belum untai (karakter) Unicode.
- Cari nama komputer pengendali domain (DC) dengan memanggil NetGetDCName.
- Cari nama pengguna di komputer DC dengan memanggil NetUserGetInfo.
- Konversikan nama pengguna lengkap ke ANSI, kecuali program mengharapkan untuk bekerja dengan string Unicode.
Kode sampel berikut adalah fungsi (GetFullName) yang mengambil nama pengguna dan nama domain dalam dua argumen pertama dan mengembalikan nama lengkap pengguna dalam argumen ketiga.
#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);
}