0

要使用 MinGW 从 Windows 获取用户名,我应该使用 unistd.h 中的函数 getlogin() 还是 Windows 函数 GetUserName?

谢谢你。

4

1 回答 1

2

您可以检查USERNAME变量:

char *name = getenv("USERNAME"); // Get environmentvariable for Username

if( name == NULL )
    return -1; // Username not found ...
else
    printf("%s\n", name); // Output Username

如果您完全使用 Windows,您也可以使用它的 API ( GetUserName()):

#include <windows.h>
#include <Lmcons.h>

// ...

TCHAR name [ UNLEN + 1 ];
DWORD size = UNLEN + 1;

if( GetUserName((TCHAR*) name, &size) )
    printf("%s\n", name); // Output Username
else
    return -1; // Username not found ...

一般来说:

  • getlogin()如果你在linux / unix上使用,因为它在 MinGW 中不可用
  • GetUserName()如果您在Windows上,请使用
  • 使用两者(条件组预处理器)来保持平台独立
于 2013-02-04T22:27:29.907 回答