已经知道了Windows用户的登陆名,用那个API能获得该用户的全名? rt 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LPTSTR UserName; DWORD cchBuff = 256; TCHAR tchBuffer[1024]; ZeroMemory(&tchBuffer, sizeof(tchBuffer)/sizeof(TCHAR)); UserName = tchBuffer; GetUserName(UserName, &cchBuff); 问题详述:比方说 有个win2k Server, 上面有个用户UserA(这是登陆名), 他的全名是:李逵。我希望能够根据字串"UserA"获得字串“李逵”,不知道用那个API.至于当前用户吗,可能使administrator,也可能是UserB,或者其他人,无所谓的。 用WMI可以我也想知道不用WMI时怎么取得用户名而不是帐号名 // CUserMonitorInfo 消息处理程序DWORD CUserMonitorInfo::UserE(){ PVOID Data; DWORD Total = 0, i; NET_API_STATUS NetStatus; NET_DISPLAY_USER *UserInfo; DWORD Level = 1; DWORD Index = 0; DWORD EntriesRequested = 1024; DWORD PreferredMaximumLength = 102400; NetStatus = NetQueryDisplayInformation(NULL, Level, Index, EntriesRequested, PreferredMaximumLength, &Total, &Data); if (NetStatus != NERR_Success || Data == NULL) { return 0; } UserInfo = (NET_DISPLAY_USER *)Data; for (i=0; i<Total; i++) { USES_CONVERSION; m_userinfolist.InsertItem (0,W2A(UserInfo->usri1_name)); m_userinfolist.SetItemText (0,1, W2A(UserInfo->usri1_full_name)); m_userinfolist.SetItemText (0,2, W2A(UserInfo->usri1_comment)); CString temp; temp.Format("%ld",UserInfo->usri1_user_id); m_userinfolist.SetItemText (0,3,temp); UserInfo++; } NetApiBufferFree(Data);}上面程序中W2A(UserInfo->usri1_name)是用户名,W2A(UserInfo->usri1_full_name)); 是用户全名,程序在VC7.0中编译。VC6.0中W2A编译不过去。需要的头文件:(你测试一下,反正有下面的头文件足够了)#include <lm.h>#include <stdio.h>#include <setupapi.h>#include <regstr.h>#include "include\\psapi.h"#include "include\\iphlpapi.h"#pragma comment (lib,"psapi")#pragma comment (lib,"ws2_32")#pragma comment (lib,"netapi32")#pragma comment (lib,"advapi32")#pragma comment (lib,"iphlpapi")#pragma comment (lib,"setupapi.lib")#include <windows.h>#include <tlhelp32.h>#include <devguid.h> directshow播放下载中的文件的问题 通过SNMP获取APC UPS信息 有关参数存放的问题? 如何实现定时启动和定时关闭一程序,求源码,大虾帮忙~~ 请问如何设置FTP上传的TimeOut值? 请问下面这段话怎样翻译? 什么情况下WaitForMultipleObjects会返回WAIT_FAILED?? 疯狂给分100 如何用VC编程实现单台主机上双VGA卡的不同画面显示?急急急! 新手问题 为什么GDI+中的ConvertFormat()不能用? 如何获得自己创建的无模式对话框的句柄?
DWORD cchBuff = 256;
TCHAR tchBuffer[1024];
ZeroMemory(&tchBuffer, sizeof(tchBuffer)/sizeof(TCHAR));
UserName = tchBuffer;
GetUserName(UserName, &cchBuff);
比方说 有个win2k Server, 上面有个用户UserA(这是登陆名), 他的全名是:李逵。我希望能够根据字串"UserA"获得字串“李逵”,不知道用那个API.至于当前用户吗,可能使administrator,也可能是UserB,或者其他人,无所谓的。
我也想知道不用WMI时怎么取得用户名而不是帐号名
DWORD CUserMonitorInfo::UserE()
{
PVOID Data;
DWORD Total = 0, i;
NET_API_STATUS NetStatus;
NET_DISPLAY_USER *UserInfo; DWORD Level = 1;
DWORD Index = 0;
DWORD EntriesRequested = 1024;
DWORD PreferredMaximumLength = 102400;
NetStatus = NetQueryDisplayInformation(NULL, Level, Index, EntriesRequested, PreferredMaximumLength, &Total, &Data);
if (NetStatus != NERR_Success || Data == NULL)
{
return 0;
}
UserInfo = (NET_DISPLAY_USER *)Data;
for (i=0; i<Total; i++)
{
USES_CONVERSION;
m_userinfolist.InsertItem (0,W2A(UserInfo->usri1_name));
m_userinfolist.SetItemText (0,1, W2A(UserInfo->usri1_full_name));
m_userinfolist.SetItemText (0,2, W2A(UserInfo->usri1_comment));
CString temp;
temp.Format("%ld",UserInfo->usri1_user_id);
m_userinfolist.SetItemText (0,3,temp); UserInfo++;
}
NetApiBufferFree(Data);
}
上面程序中W2A(UserInfo->usri1_name)是用户名,W2A(UserInfo->usri1_full_name)); 是用户全名,程序在VC7.0中编译。VC6.0中W2A编译不过去。
需要的头文件:(你测试一下,反正有下面的头文件足够了)
#include <lm.h>
#include <stdio.h>
#include <setupapi.h>
#include <regstr.h>#include "include\\psapi.h"
#include "include\\iphlpapi.h"#pragma comment (lib,"psapi")
#pragma comment (lib,"ws2_32")
#pragma comment (lib,"netapi32")
#pragma comment (lib,"advapi32")
#pragma comment (lib,"iphlpapi")
#pragma comment (lib,"setupapi.lib")
#include <windows.h>
#include <tlhelp32.h>
#include <devguid.h>