Страницы

Поиск по вопросам

пятница, 10 мая 2019 г.

Как получить полный путь к папкам Temp и Application Data

Имеются ввиду системная папка Temp в WINDOWS\ и Application Data (%APPDATA%)


Ответ

%APPDATA% можно получить, например, функцией SHGetFolderPath или getenv из стандартной библиотеки, %TEMP% для текущего пользователя - GetTempPath или та же getenv, а вот для получения системной папки %TEMP% придётся использовать функцию ExpandEnvironmentStringsForUser
#include
#include #include #include
int main() { TCHAR szPath[MAX_PATH]; char* path;
if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szPath))) { std::cout << "%APPDATA% (SHGetFolderPath) = " << szPath << std::endl; }
path = getenv("APPDATA"); if (path != NULL) { std::cout << "%APPDATA% (getenv) = " << path << std::endl; }
if (GetTempPath(MAX_PATH, szPath)) { std::cout << "User's %TEMP% (GetTempPath) = " << szPath << std::endl; }
path = getenv("TEMP"); if (path != NULL) { std::cout << "User's %TEMP% (getenv) = " << path << std::endl; }
if (ExpandEnvironmentStringsForUser(NULL, "%TEMP%", szPath, MAX_PATH)) { std::cout << "System's %TEMP% = " << szPath << std::endl; }
return 0; }
Для использования ExpandEnvironmentStringsForUser нужно дополнительно прилинковаться к Userenv.dll

Комментариев нет:

Отправить комментарий