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

问题描述 投票:-2回答:3

对于不同的用户名和应用,我如何定义“C:/ Users / <USER> / AppData / Local / <APPNAME>”之类的路径?如何将其设置为自动获取用户和appname?谢谢。

c++ winapi
3个回答
1
投票

您可以使用SHGetKnownFolderPath获取App Local的完整路径:

...
#include <KnownFolders.h>
#include <ShlObj.h>
...
    SHGetKnownFolderPath(FOLDERID_LocalAppData, KF_FLAG_SIMPLE_IDLIST, NULL, &path); // NULL for current user
...

1
投票

要获取给定用户的Local AppData路径,请使用指定SHGetFolderPath()CSIDL_LOCAL_APPDATA或指定SHGetKnownFolderPath()FOLDERID_LocalAppData。两者都使用可选的用户令牌来查询所需的用户帐户。如果您不提供令牌,则使用与调用线程关联的用户。


1
投票

要获取用户名:

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"));
© www.soinside.com 2019 - 2024. All rights reserved.