如何获取文件路径的用户名和应用名称

时间:2019-03-14 06:55:25

标签: c++ winapi

如何为不同的用户名和应用程序定义诸如“ C:/ Users / / AppData / Local / ”的路径?如何设置它以自动获取用户和应用名称?谢谢。

3 个答案:

答案 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_APPDATASHGetKnownFolderPath()指定FOLDERID_LocalAppData。两者都使用可选的用户令牌供所需的用户帐户查询。如果您不提供令牌,则使用与调用线程关联的用户。