Как открыть папку в %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
как абсолютный путь, в том числе имя пользователя и с учетом какой бы версии ОС они ни использовали.