Как открыть папку в %appdata% с помощью C++?

Как вы все знаете, папка AppData это

 C:Users*Username*AppDataRoaming

в windows 7

поскольку мое приложение будет развернуто на всех видах ОС Windows, мне нужно иметь возможность получать папку 100% процентов времени. Вопрос в том, как вы это делаете на C++? Поскольку я не знаю точную ОС Windows, это может быть XP, Vista или 7, и самое главное, я не знаю, что имя пользователя есть.

2 ответов


для максимальной совместимости со всеми версиями Windows, вы можете использовать SHGetFolderPath функции.
Для этого необходимо указать CSIDL значение для папки, путь к которой вы хотите получить. Для папки данных приложения это будет CSIDL_APPDATA.

в Windows Vista и более поздних версиях следует использовать SHGetKnownFolderPath функции вместо этого требуется указать папку KNOWNFOLDERID значение. Опять же, для папка данных приложения, соответствующее значение FOLDERID_RoamingAppData.

чтобы использовать любую из этих функций из вашего приложения C++, вам нужно включить shlobj.h.


вы можете попробовать следующее:

char* appdata = getenv("APPDATA");

этот код считывает переменную среды APPDATA (вы также можете увидеть ее при вводе SET в окне командной строки). Это устанавливается Windows при запуске системы.

он вернет путь пользователя appdata как абсолютный путь, в том числе имя пользователя и с учетом какой бы версии ОС они ни использовали.