对于不同的用户名和应用,我如何定义“C:/ Users / <USER> / AppData / Local / <APPNAME>”之类的路径?如何将其设置为自动获取用户和appname?谢谢。
您可以使用SHGetKnownFolderPath
获取App Local的完整路径:
...
#include <KnownFolders.h>
#include <ShlObj.h>
...
SHGetKnownFolderPath(FOLDERID_LocalAppData, KF_FLAG_SIMPLE_IDLIST, NULL, &path); // NULL for current user
...
要获取给定用户的Local AppData路径,请使用指定SHGetFolderPath()
的CSIDL_LOCAL_APPDATA
或指定SHGetKnownFolderPath()
的FOLDERID_LocalAppData
。两者都使用可选的用户令牌来查询所需的用户帐户。如果您不提供令牌,则使用与调用线程关联的用户。
要获取用户名:
char username[MAX_PATH];
DWORD size = MAX_PATH;
GetUserName(username,&size);
要获取appname(不带“.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"));