教你在Windows上用C语言获得当前登录用户名

2026-04-02 04:55:39

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这个头文件中。

教你在Windows上用C语言获得当前登录用户名

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;

}

教你在Windows上用C语言获得当前登录用户名

3、我们先定义一个LPDWORD类型的变量。

DWORD size = UNLEN + 1;

然后开始定义我们的字符串缓冲区。

char buf[size];

教你在Windows上用C语言获得当前登录用户名

4、调用API获得我们的用户名

if(GetUserName(buf,&size))

{

  printf("您当前的用户名为:%s\n",buf);

}

else

{

 printf("用户名获得失败!");

}

这里要说明一点,GetUserName的2个参数都是指针类型,为什么buf这个变量不用取址符?因为字符串的名字其实就是代表字符串的指针(开始地址)。

如果小伙伴知道char * string = "字符串"; 就能理解了。

教你在Windows上用C语言获得当前登录用户名

5、编译运行后,可以看到我们想要的结果。

快看,我们成功得到了当前用户的用户名

教你在Windows上用C语言获得当前登录用户名

1、怎么关注?

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

教你在Windows上用C语言获得当前登录用户名

2、怎么点赞?

请在经验左侧点赞,如图。

教你在Windows上用C语言获得当前登录用户名

3、怎么投票?

在经验的下方点击投票,如图。

教你在Windows上用C语言获得当前登录用户名

4、如果觉得小编写的还不错,可以动动鼠标把它分享给您的朋友。

如何分享,鼠标移动到右下角第一个按钮上,在弹出的选项中进行分享,如图。

不尽感激。

教你在Windows上用C语言获得当前登录用户名

猜你喜欢