如何获取当前用户的用户名?

我想使用C编程访问Windows中的用户名,并使用该名称创build特定文件的path,如“c:\ users \ john \ Roaming …..等等”。 所以对于每个系统用户名,例如“john”是不同的。 帮助我在运行时find用户名。

Solutions Collecting From Web of "如何获取当前用户的用户名?"

你在找什么,在这里,可能是更多的SHGetKnownFolderPath 。 该功能可以让你找到每个用户的特殊文件夹。 这比查询用户名更受欢迎,因为主文件夹可能与用户名称不同。

 WSTR* location; HRESULT hr = SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, NULL, &location); if (SUCCEEDED(hr)) { // location contains the folder path // call CoTaskMemFree to free up the memory once you're done with it CoTaskMemFree(location); } 

所谓的已知文件夹列表可以在这里找到 。

 #include <stdio.h> int main(void) { printf("%s\n", getenv("USERPROFILE")); // Print user's home directory. return 0; } 

要获取用户名而不是主路径,请用USERNAME替换USERPROFILE

在Windows上获取用户名的函数是GetUserName

这个答案可能也会帮助你。

你可以使用下面的代码来获取用户名。

  #include <stdlib.h> void main(void) { //following gets the appdata folder char szAppData[1024]; char * szBufer = 0; szBufer = getenv ("APPDATA"); if (szBufer != NULL) { strcpy(szBufer , szAppData); } //following code gets the user name char szOSUserName[1024]; szBufer = getenv ("USERNAME"); if (szBufer != NULL) { strcpy(szBufer , szOSUserName); } } 

%USERNAME%会给你用户名,但更好的解决方案是将其存储在%USERPROFILE%\\Desktop\\key.txt至少使其独立于操作系统。

而更好的解决方案是不要在用户的桌面上存储私人信息。 或任何地方。

您可以使用GetUserName获取当前用户的名称:

 #include <Windows.h> #include <Lmcons.h> #include <stdio.h> int main() { char name[UNLEN + 1]; DWORD cch = UNLEN + 1; if (GetUserName(name, &cch)) { char cmd[100 + UNLEN + 1]; sprintf(cmd, "echo The username is \"%s\"", name); // Silly demo command system(cmd); } return 0; } 

如果您想要特定格式的名称,请使用GetUserNameEx

如果您需要获取像“我的文档”或“桌面”这样的特殊文件夹的路径,则应使用SHGetFolderPathSHGetKnownFolderPath等特殊文件夹功能。