如何为不同的用户名和应用程序定义诸如“ C:/ Users /
答案 0 :(得分:1)
您可以使用SHGetKnownFolderPath
来获取App Local的完整路径:
...
#include <KnownFolders.h>
#include <ShlObj.h>
...
SHGetKnownFolderPath(FOLDERID_LocalAppData, KF_FLAG_SIMPLE_IDLIST, NULL, &path); // NULL for current user
...
答案 1 :(得分:1)
要获取用户名:
char username[MAX_PATH];
DWORD size = MAX_PATH;
GetUserName(username,&size);
获取应用名称(不带“ .exe”的可执行文件名):
char appname[MAX_PATH];
char buffer[MAX_PATH];
GetModuleFileName(NULL, appname,MAX_PATH); //get the string: "PATH\\appname.exe"
char *szExe = NULL;
//Remove prefix
GetFullPathName(appname, MAX_PATH, buffer, &szExe);
//Remove suffix
strncpy_s(appname, szExe, strlen(szExe) - strlen(".exe"));
答案 2 :(得分:1)
要获取给定用户的本地AppData路径,请使用SHGetFolderPath()
指定CSIDL_LOCAL_APPDATA
或SHGetKnownFolderPath()
指定FOLDERID_LocalAppData
。两者都使用可选的用户令牌供所需的用户帐户查询。如果您不提供令牌,则使用与调用线程关联的用户。