教你在Windows上用C语言获得当前登录用户名
1、我们要用到的是windows API函数GetUserName,我们可以到MSDN上看看接口说明。
函数原型为:BOOL GetUserName( LPTSTR lpBuffer, LPDWORD nSize);
注意图片中小编用红色标识部分:
A buffer size of (UNLEN + 1) characters will hold the maximum length user name including the terminating null character. UNLEN is defined in Lmcons.h.
这句话的意思就是, lpBuffer的大小最好是UNLEN + 1,包括字符串的\0终止字符,UNLEN这个宏被定义在Lmcons.h这个头文件中。

2、BOOL GetUserName( LPTSTR lpBuffer, LPDWORD nSize);
参数lpBuffer是一个字符串缓冲区,用于接收我们要保存的用户名。
而nSize则是声明lpBuffer缓冲区大小。
一定要注意的是,这2个参数都是指针类型。
返回值为一个BOOL类型,成功执行返回True(非0),失败返回False 0
我们先写好一个标准的main函数。如下:
#include <windows.h>
//windows.h头文件中声明了API的函数原型
#include <Lmcons.h>
//UNLEN宏所在的头文件
#include <stdio.h>
int main(int argc,char * argv[])
{
return 0;
}

3、我们先定义一个LPDWORD类型的变量。
DWORD size = UNLEN + 1;
然后开始定义我们的字符串缓冲区。
char buf[size];

4、调用API获得我们的用户名
if(GetUserName(buf,&size))
{
printf("您当前的用户名为:%s\n",buf);
}
else
{
printf("用户名获得失败!");
}
这里要说明一点,GetUserName的2个参数都是指针类型,为什么buf这个变量不用取址符?因为字符串的名字其实就是代表字符串的指针(开始地址)。
如果小伙伴知道char * string = "字符串"; 就能理解了。

5、编译运行后,可以看到我们想要的结果。
快看,我们成功得到了当前用户的用户名

1、怎么关注?
在经验的右上角小编头像旁边点击关注,如图。

2、怎么点赞?
请在经验左侧点赞,如图。

3、怎么投票?
在经验的下方点击投票,如图。

4、如果觉得小编写的还不错,可以动动鼠标把它分享给您的朋友。
如何分享,鼠标移动到右下角第一个按钮上,在弹出的选项中进行分享,如图。
不尽感激。
