运行Windows的计算机可以组织到一个域中,该域是Windows NT Server网络上的计算机集合。域管理员维护集中的用户和组帐户信息。
要查找用户的全名,请在Windows NT上给出用户名和域名:
*将用户名和域名转换为Unicode,如果它们不是Unicode字符串。
*通过调用NetGetDCName查找域控制器(DC)的计算机名称。
*通过致电NetUserGetInfo查找DC计算机上的用户名。
*将完整的用户名转换为ANSI,除非程序期待使用Unicode字符串。
以下示例代码是在前两个参数中使用用户名和域名的函数,并在第三个参数中返回用户的全名。
#include < windows.h >
的#include < lm.h >
#include < stdio.h >
BOOL GetFullName( char *UserName, char *Domain, char *dest )
{
WCHAR wszUserName[256]; // Unicode用户名
WCHAR wszDomain[256];
LPBYTE ComputerName;
struct _SERVER_INFO_100 *si100; //服务器结构
struct _USER_INFO_2 *ui; //用户结构
//将ANSI用户名和域转换为Unicode
MultiByteToWideChar(CP_ACP,0,UserName,
strlen(UserName)+1, wszUserName, sizeof(wszUserName) );
MultiByteTOWideChar(CP_ACP,0,Domain,
strlen(Domain)+1, wszDomain, sizeof(wszDomain) );
//获取域的DC的计算机名称。
NetGetDCName( NULL, wszDomain, &ComputerName );
//在DC上查找用户。
if(NetUserGetInfo((LPWSTR)ComputerName,
(LPWSTR)& wszUserName,2,(LPBYTE *)& ui))
{
printf( "Error getting user information.\n" );
return( FALSE );
}
//将Unicode全名转换为ANSI。
WideCharToMultiByte(CP_ACP,0,ui- > usri2_full_name,-1,
dest, 256, NULL, NULL );
return (TRUE);
}