如何查找用户的全名

【勇芳软件工作室】汉化HomePreviousNext

运行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);

}