Nachschlagen des vollständigen Namens eines Benutzers
Computer können in einer Domäneorganisiert werden, die eine Sammlung von Computernetzwerken ist. Der Domänenadministrator verwaltet zentralisierte Benutzer- und Gruppenkontoinformationen.
Um den vollständigen Namen eines Benutzers zu finden, geben Sie den Benutzernamen und den Domänennamen an:
- Konvertieren Sie den Benutzernamen und den Domänennamen in Unicode, wenn sie nicht bereits Unicode-Zeichenfolgen sind.
- Suchen Sie den Computernamen des Domänencontrollers (DC), indem Sie NetGetDCNameaufrufen.
- Suchen Sie den Benutzernamen auf dem DC-Computer, indem Sie NetUserGetInfoaufrufen.
- Konvertieren Sie den vollständigen Benutzernamen in ANSI, es sei denn, das Programm erwartet, dass er mit Unicode-Zeichenfolgen funktioniert.
Der folgende Beispielcode ist eine Funktion (GetFullName), die einen Benutzernamen und einen Domänennamen in den ersten beiden Argumenten verwendet 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);
}