Как открыть папку в% appdata% с помощью С++?
Как вы все знаете, папка appdata - это
C:\Users\*Username*\AppData\Roaming
на окнах 7
Поскольку мое приложение будет развернуто на всех видах ОС Windows, мне нужно будет получить папку на 100% процентов времени.
Вопрос в том, как вы это делаете на С++? Поскольку я не знаю точной ОС Windows, это может быть XP, Vista или 7 и, самое главное, я не знаю, что такое Username.
Ответы
Ответ 1
Для максимальной совместимости со всеми версиями Windows вы можете использовать функцию SHGetFolderPath
.
Для этого требуется указать значение CSIDL для папки, путь которой вы хотите получить. Для папки данных приложения это будет CSIDL_APPDATA
.
В Windows Vista и более поздних версиях вместо этого вы должны использовать функцию SHGetKnownFolderPath
, для которой требуется указать папку KNOWNFOLDERID
. Опять же, для папки данных приложения соответствующее значение FOLDERID_RoamingAppData
.
Чтобы использовать любую из этих функций из вашего приложения на С++, вам нужно включить shlobj.h
.
Ответ 2
Вы можете попробовать следующее:
char* appdata = getenv("APPDATA");
Этот код считывает переменную окружения APPDATA (вы также можете увидеть ее при вводе SET
в окне команд). Он устанавливается Windows при запуске вашей системы.
Он вернет путь пользователя appdata
как абсолютный путь, включая имя пользователя и с учетом той версии ОС, которую они используют.
Ответ 3
Используйте этот код для чтения переменной среды "APPDATA"
Включить файл stdio.h в начало
char *pValue;
size_t len;
errno_t err = _dupenv_s(&pValue, &len, "APPDATA");