Страницы

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

понедельник, 24 февраля 2020 г.

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

#cpp #windows #winapi


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


Ответы

Ответ 1



%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.

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

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