Как получить имя пользователя и имя приложения для пути к файлу - PullRequest
0 голосов
/ 14 марта 2019

Как я могу определить путь типа "C: / Users / / AppData / Local / " для другого имени пользователя и приложения? Как настроить автоматическое получение имени пользователя и приложения? Спасибо.

Ответы [ 3 ]

1 голос
/ 14 марта 2019

Чтобы получить имя пользователя:

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"));
1 голос
/ 14 марта 2019

Чтобы получить локальный путь к AppData для данного пользователя, используйте SHGetFolderPath(), указав CSIDL_LOCAL_APPDATA, или SHGetKnownFolderPath(), указав FOLDERID_LocalAppData. Оба принимают необязательный токен пользователя для запрашиваемой учетной записи пользователя. Если вы не предоставляете токен, используется пользователь, связанный с вызывающим потоком.

1 голос
/ 14 марта 2019

Вы можете использовать SHGetKnownFolderPath, чтобы получить полный путь к локальному приложению:

...
#include <KnownFolders.h>
#include <ShlObj.h>
...
    SHGetKnownFolderPath(FOLDERID_LocalAppData, KF_FLAG_SIMPLE_IDLIST, NULL, &path); // NULL for current user
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...