我想使用C编程访问Windows中的用户名,并使用该名称创建特定文件的路径,如“c:\ users \ john \ Roaming .....等”。因此对于每个系统用户名,例如“john”是不同的。帮助我在运行时找到用户名。
答案 0 :(得分:6)
#include <stdio.h>
int main(void)
{
printf("%s\n", getenv("USERPROFILE")); // Print user's home directory.
return 0;
}
要获取用户名而不是主路径,请将USERPROFILE
替换为USERNAME
。
答案 1 :(得分:5)
您在寻找的内容可能更多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);
}
可以使用所谓的已知文件夹列表here。
答案 2 :(得分:2)
在Windows上获取用户名的功能是GetUserName
This answer可能也会帮助你。
答案 3 :(得分:2)
您可以使用以下代码获取用户名。
#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);
}
}
答案 4 :(得分:1)
%USERNAME%
会为您提供用户名,但更好的解决方案是将其存储在%USERPROFILE%\\Desktop\\key.txt
上,至少使其与操作系统无关。
更好的解决方案是不将私人信息存储在用户身上。桌面。或者在任何地方。
答案 5 :(得分:1)
您可以使用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
。
如果您需要获取“我的文档”或“桌面”等特殊文件夹的路径,则应使用SHGetFolderPath
或SHGetKnownFolderPath
等特殊文件夹功能。