LINUX.ORG.RU

Иерархия ФС Windows и где хранить конфиги

 , ,


4

3

Если для Unix-подобных систем существует стандартизация в виде - FHS, XDG Base Dir, XDG User Dir и GNU Coding Standard, то напрашивается вопрос что есть у Windows? Есть ли официальная документация или какой-то стандарт, что где устанавливать/хранить. И где например хранить пользовательский ini конфиг файл?

★★

Последнее исправление: Dr64h (всего исправлений: 1)

Ответ на: комментарий от darkenshvein

Если бы всё было так просто…

Dr64h ★★
() автор топика
Ответ на: комментарий от Harald

Премного благодарен. Как понимаю работает начиная с Windows Vista?

Dr64h ★★
() автор топика

Если нужно только знать, куда класть пользовательский конфиг, то читаем переменную окружения %USERPROFILE%

Harald ★★★★★
()

Прямой эквивалент $XDG_CONFIG_HOME/_program_name_/ в венде это %APPDATA%\_program_name_\. По крайней мере работает во всех виндах начиная с XP.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от Dr64h

В целом для этого есть %APPDATA%(Local|Roaming)\CompanyName\AppName, но Roaming с какой-то версии десяточки задепрекейчен

cobold ★★★★★
()

Отлично %APPDATA%, то что надо. Всем спасибо.

Dr64h ★★
() автор топика

Если бы эти стандарты XDG ещё реально соблюдались. В Windows в этом плане лучше, да.

anonymous
()
Ответ на: комментарий от burato

Я не @fernandos, но подобные вопросы часто возникают при разработке кроссплатформенного ПО. А вот крики «на винфак» могут сподвигнуть человека и впрямь свалить на разработку windows-only ПО и запереться в башне Visual Studio, где всё решили за него. Поэтому подсказку про AppData здесь лично я считаю конструктивной, а вопросы «не оффтопик ли» — не очень.

hobbit ★★★★★
()

ТСу: я не знаю, какими библиотеками ты пользуешься, но например, в Qt для таких вещей есть кроссплатформенная обёртка в виде QStandardPaths (ранее оно лежало в QDesktopServices). Возможно, что-то подобное есть в SDL (*) и других кроссплатформенных библиотеках.

(*) В SDL сделали даже обёртку над dlopen/LoadLibrary (как и в Qt), так что почему бы и не…

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от hobbit

В девелопмент, ИМХО, перебор.

Меня больше смущает тот факт, что ответ гуглиться за несколько секунд.

fernandos ★★★
()
Ответ на: комментарий от hobbit

Прикол в том, что у меня все пути задаются в cmake скрипте (пути задаются в зависимости от операционки). И при желании их можно поменять на этапе конфигурации. После этого, cmake пробрасывает пути в заголовочный файл, запускаем сборку и бинарь уже заведомо знает о всех нужных путях и заданных параметрах, даже если они были изменены пользователем. В любом ином случае я бы получал пути из Qt функций, но это не так гибко и удобно.

Dr64h ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.