Nachschlagen des vollständigen Namens eines Benutzers
Computer können in einer Domäne organisiert werden, bei der es sich um eine Sammlung von Computernetzwerken handelt. Der Domänenadministrator verwaltet zentralisierte Benutzer- und Gruppenkontoinformationen.
So suchen Sie den vollständigen Namen eines Benutzers unter Angabe des Benutzernamens und des Domänennamens:
- Konvertieren Sie den Benutzernamen und den Domänennamen in Unicode, wenn es sich nicht bereits um Unicode-Zeichenfolgen handelt.
- Suchen Sie den Computernamen des Domänencontrollers (DC), indem Sie NetGetDCName aufrufen.
- Suchen Sie den Benutzernamen auf dem DC-Computer, indem Sie NetUserGetInfo aufrufen.
- Konvertieren Sie den vollständigen Benutzernamen in ANSI, es sei denn, das Programm erwartet, mit Unicode-Zeichenfolgen zu arbeiten.
Der folgende Beispielcode ist eine Funktion (GetFullName), die einen Benutzernamen und einen Domänennamen in den ersten beiden Argumenten akzeptiert und den vollständigen Namen des Benutzers im dritten Argument zurückgibt.
#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);
}