Chinaunix首页 | 论坛 | 博客
  • 博客访问: 755951
  • 博文数量: 128
  • 博客积分: 7079
  • 博客等级: 少将
  • 技术积分: 1326
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-16 08:53
文章分类

全部博文(128)

文章存档

2011年(3)

2010年(12)

2009年(9)

2008年(23)

2007年(61)

2006年(20)

我的朋友

分类: C/C++

2007-03-14 13:32:13

如何获取Windows系统登陆用户的用户名呢?
    一般用 GetUserName(或 GetUserNameEx )函数可得到当前登陆登陆用户名(但不总会得到),此系统函数在Win95、WinNT 及以后所有操作系统中都可用。代码如下:
 
CString strName;
BOOL bRet(TRUE); 
strName = _T(""); 
DWORD dwSize = MAX_PATH; 
TCHAR *pszName = new TCHAR[dwSize]; 
if (!GetUserName(pszName, &dwSize)) 
{  
         delete[] pszName;  
         pszName = new TCHAR[dwSize];  
         bRet = GetUserName(pszName, &dwSize); 
}  
strName = pszName; 
delete[] pszName; 
strName 的内容就是了
   此函数目的准确来说是获取当前线程的用户名(MSDN语:retrieves the user name of the current thread)。如果是NT service(NT服务程序)将此进程启动,得到的结果是NT Service进程的用户名,即“SYSTEM”,而不是登陆用户名;同理,如果此进程是通过CreateProcessAsUser创建的,GetUserName获取的用户将是“AsUser”的用户名。另外,如果当前线程正impersonate其他用户环境(用函数ImpersonateLoggedOnUser可达到此目的),它获取的将是其他用户名。因此,此函数只能在特定环境中才可以获取登陆用户名。
 
阅读(3420) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~