如何在MinGW中获取用户名?

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

谢谢。

您可以检查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  #include  // ... 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 ... 

一般来说:

  • 如果您使用的是linux / unix,请使用getlogin() ,因为它在MinGW中不可
  • 如果你在Windows上使用GetUserName()
  • 使用两者 (条件组预处理器),你想要保持独立平台