Где программе хранить свои настройки?

    Есть программа, которая должна сохранять и загружать некоторые настройки: позицию и размер главного окна программы, идентификатор выбранного языка, время последней проверки обновления. Я задался вопросом — где программа должна хранить свои настройки? Решил собрать информацию на эту тему и поделится ею с вами.

    Возможные папки, для хранения настроек и файлов программы:
    • Program Files
    • My Documents
    • User\Application Data
    • User\Local Settings\Application Data
    • All Users\Application data

    Program Files
    Хранить настройки в папке самой программы не рекомендуется, пользователю банально может просто не хватить прав на запись и чтение каталога программы. Плюс (вернее минус) настройки пользователей будут общими, никто не сможет настроить программу под себя или хранить в ней только персональные данные.

    My Documents
    XP: Documents and Settings\User\My Documents
    Vista: Users\User\Documents
    На мой взгляд не верный подход. Папку не зря назвали Мои Документы. Поэтому, если программа не формирует каких-либо документов, а должна всего-лишь хранить свои настройки, то им там не место. Не знаю как Вас, а меня слегка раздражают папки внутри папки с документами. Я их там, между прочим упорядочиваю, распихиваю по подкаталогам и тут на тебе, захожу в папку и вижу Visual Studio 2008.

    User\Application Data
    XP: Documents and Settings\User\Application Data
    Vista: Users\User\AppData\Roaming
    Файлы из этой папки входят в состав перемещаемых профилей (roaming profiles, per-user). Т.е. если вы хотите, чтобы данные Вашей программы могли бы перемещаться вместе с профилем пользователя храните их в этой папке.

    User\Local Settings\Application Data
    XP: Documents and Settings\User\Local Settings
    Vista: Users\User\AppData\Local
    В этой папке можно хранить файлы, не входящие в состав перемещаемых профилей (per-user-per-machine), а так же временные и большие по размеру файлы, перемещение которых либо не требуется (временные, кэш, прочий рабочий «мусор»), либо потребует значительных временных затрат (храните файл размером в пару сотен мегабайт в перемещаемом профиле и пользователь обязательно скажет Вам «спасибо»).

    All Users\Application data
    XP: Documents and Settings\All Users\Application Data
    Vista: ProgramData
    В этой папке можно хранить файлы, которые являются общими для всех пользователей компьютера, например общая база данных, набор общих документов, клипарт и т.д. Эта папка не входит в состав перемещаемых профилей (per-machine). Обычные пользователи (не администраторы) имеют к этой папке доступ в режиме только для чтения.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 286

      –47
      Настойки — реестр. Временные и рабочие файлы — %TEMP%. Имхо здесь не нужно изобретать велосипед.
        +30
        Microsoft настоятельно рекомендует отказаться от идей хранения настроек в реестре, оставив его (реестр) для системных и легаси-приложений, которые нет смысла переделывать на отказ от реестра (особенно в случае с COM)
          +4
          То майкрософт рекомендует использовать реестр, то уже не рекомендует %)
            +18
            Вы малёхо запоздали. Майкрософт перестал указывать на реестр году этак в 2002.
            Да, ни на кого нельзя положиться в этом мире :)
              +2
              Это просто потому что давно на лунукс перешел :) вот по старой памяти вспомнилось, как по рекомендациях майкрософта учился в реестр писать :)
                +3
                Реестр теперь остался только для системы. Почему бы им тогда систему не перевести на хранение настроек в файлах и не избавиться от реестра, если они его не рекомендуют?
                  +1
                  Это было бы здорово.
                    +1
                    А какая вам разница, как сделано в системе; работает — не трогай, вам разве мешает? :)
                    Нахрена переходить на хранение настроек системы в файлах?
                      0
                      Совсем круто — это SQL-like хранилище с XML-конфигами внутри — легко искать, легко модифицировать. Мечты…
                        0
                        WinFS старалось, но не осилело :/
                          +4
                          И не забывать про регулярный vacuum :)
                            +1
                            та да… это по-хлещще дефрагментации процедура будет — та еще!
                            –9
                            Превед Firefox…
                            а ваще json рулит, только никто об этом тут не задумывается даже
                              0
                              Угу, еще бы систему контроля версий туда прикрутить… (шутка юмора)
                                +1
                                лучше уж документоориентированная БД с JSON внутри.
                                0
                                И заодно выкинуть возможность ставить старые программы?
                                  +1
                                  С чего бы это? Разве «старые программы» работают с файлом реестра напрямую? Ведь через интерфейс же. Вот реализация и засовывала бы всё в фс.
                                    0
                                    Насколько я понимаю, от реестра рекомендуют отказаться не потому, что он не файловый, в противном случае можно было бы ничего не менять и сделать, как вы сказали.
                                    Так что под «выкинуть» реестр я понял именно убирание того нежелательного реестра, чтобы в него нельзя было писать, а как именно он реализован, уже не суть.
                                      0
                                      Погодите, я может неправильно понял о чем вы… но реестр и так хранится в файлах. В нескольких. %SystemRoot%\System32\Config\ если не вдаваться в подробности.
                                        0
                                        Верно, хранится в файлах. Ну структура хранения данных в этих файлах сравнима со структурами файловой системы.
                                  –2
                                  Привет, gconf! :)
                                    +2
                                    пруфлинк?
                                      +4
                                      Млин, и за что человека минусуют? За просьбу пруфлинка? Минусуйте и меня, мне он тоже нужен: за все годы программирования я про это слышу впервые.

                                      В MSDN написано обратное:
                                      «The following are the initialization-file functions. They retrieve information from and copy information to a system- or application-defined initialization file. These functions are provided only for compatibility with 16-bit versions of Windows. New applications should use the registry.» (из Registry Functions).
                                        0
                                        Цитата, что вы привели, из MSDN 99 года. Это раз. Второе — вы вырвали фразу из контекста, это нехорошо. В оригинале имелось в виду, что .INI файлы не рулят, и стоит использовать реестр (это и было его назначение).
                                        С того времени все изменилось. Новое направление MS (.net) крайне не приветствует реестр — загляните в Beest Practices:
                                        а) придерживаются политики Zero/XCopy Copy Deployment
                                        б) манифестом файла (.manifest) можно полностью описать ту инфу, что раньше требовалась от реестра
                                        в) в конфиг файлы приложения можно класть все настройки, что требовалось вносить в реестр. Местоположение файла также можно выбрать, чтобы не потерять при установке, например.
                                  0
                                  А в чем проблема с реестром (по версии МS)?
                                    –13
                                    Я не знаю, что по его поводу думает MS, но бывает много проблем с правами. Особенно тяжёлым был переход с XP на Висту. UAC — зло (хотя сейчас уже привыкли :)
                                      +8
                                      UAC — зло, Вирусы — добро?
                                        –6
                                        Я говорю с точки зрения тестера.
                                        +12
                                        UAC не зло; зло те, кто решили, что их программа будет всегда работать под админом.
                                        Windows, начиная с 2003 Server и Vista постепенно по модели безопасности начинает приближаться к Unix-системам, даже на домашних машинах. Чтобы старые программы не обломались в новой среде безопасности, и существует UAC.
                                          –17
                                          Поверьте, UAC создаёт значительно больше проблем, чем пользователи, работающие не под админами. Безусловно, раньше с нехваткой прав тоже были некоторые проблемы, но борьба с этими проблемами была тривиальной.
                                            +3
                                            Каких проблем?
                                              +1
                                              С удовольствием послушаю про проблемы (чур, elevation не приплетать, это отдельный решаемый вопрос).
                                                +2
                                                Смотрите описание, напимер, первой проблемы поссылке.
                                                Пример.
                                                Есть подписанный msi. Ставим — всё ок. Начинаем удалять — UAC запрашивает разрешение, потому что считает, что с подписью что-то не так ( кажется, что-то с ней действительно случается при копировании в %SystemRoot%\installer ). Проблема пока решается только через одно известное всем место (городушкой городушек).
                                                  0
                                                  Так это не UAC виноват, это Windows installer затупляет. Я думаю, в 7ке поправят
                                                    0
                                                    Я уже сталкивался с этим в 7ке
                                                      +3
                                                      Это не аргумент против UAC как концепции, это просто баг.
                                                        +1
                                                        Аррръъ!
                                                        Вот оно, недопонимание. Я изначально и говорил только о багах, без которых не обходится ничто новое. А концепция, безусловно, хороша.
                                                +8
                                                Поверьте, UAC создаёт значительно больше проблем, чем пользователи, работающие не под админами.
                                                Написал нам ботнет-зомби
                                              –2
                                              Исходники sudo сколько лет валяются в инете, бери — не хочу…
                                              +8
                                              В объеме — раз;
                                              В правах — два;
                                              В отсутствии удобных средств управления — три;
                                              В неочевидности зависимостей и изменений — четыре;
                                              В отсутствии самоописуемости — пять…

                                              Продолжать?
                                                +1
                                                1. Надуманная проблема, не такие уж там объемы, чтобы говорить об этом.
                                                2. С UAC никакой разницы нет что в User-директорию писать, что в CURRENT_USER реестра.
                                                3. API для работы с реестром разве нет?
                                                4. Можно подробнее?
                                                5. Имеете ввиду, что комментарии нельзя написать для значений?
                                                  +1
                                                  1. Вы какой единицей меряете? Сотни тысяч записей, пусть и иерархических — это немного?
                                                  2. В плане прав нет. В плане контента ФС богаче по возможностям.
                                                  3. Есть, и что? Вы видели инстументы для удобной работы с ним — diff, упаковка, версии, все такое? Почему в нем остаются мегатонны лишних записей — API же есть?
                                                  4. Можно. Пропишите руками все ключи для регистрации out-of-process COM сервера и его же для DCOM. Затем поменяйте место его установки. Теперь тоже самое для Addin к Visual Studio, и при этом не ругаться матом :)
                                                  5. Нет, имею в виду, что совершенно непонятно, куда смотреть, чтобы найти настройки конкретной программы; а также непонятно, что эти настройки означают.
                                                    +3
                                                    Вы, почему-то уверены в том, что основной юзкейс реестра, это ходить в него руками и что-то там править. Мне кажется, в идеологии Windows это совсем не так. Это просто хранилище для настроек программ. Следовательно работа с ним должна производиться средствами API.

                                                    Вот к примеру, есть у вас программа. При установке (мы знаем, что установка в основном проходит с повышенными правами) она может заполнить реестр каким-либо настройками в HKLM. Далее ей начинает пользоваться человек. Соотвественно все что он меняет пишется в HKCU. Таким образом при переносе профиля пользователя с одной машины на другую его HKCU переедет вместе с ним. И, если на другой машине эта программа установлена, то пользователь приятно удивится, потому что окружение программы будет настроено под него.

                                                    Реестр нельзя использовать для portable версий программ, так как они запускаются с ограниченными правами и скорее всего смогут писать только в свою или пользовательскую директорию (скорее всего они в ней и находятся). Замусоривать HKCU или User\Application Data смысла нет, так как в этом случае настройки не будут portable. :)

                                                    В целом, я хочу сказать, что если подчинить разработку архитектуре системы и знать ее особенности, то реестр очень удобен.
                                                      0
                                                      >> что основной юзкейс реестра, это ходить в него руками и что-то там править
                                                      Если реестр позволяет это делать и так думать про него, более того — есть reg- и rgs- файлы, которыми можно патчить ветки реестра, то, мне кажется, это проблема реестра, а не моя — это он сделан таким образом, что позволяет думать про него так, а не иначе :)

                                                      В теории он превосходен — как раз проектировался для того, чтобы собрать многочисленные ini по всей системе в одно место. Опять же, заметьте — собрать ini системы и системных приложений, т.е. internal settings.

                                                      На практике после появления HKCU, а потом и public API к любым кустам, началась жесть :)
                                                        +2
                                                        Заметьте, что реестр никак не мешает вам не лазить в него руками или каким-либо образом наводить там бардак.

                                                        Естественно, попав в руки массы программистов, которые не понимают, что такое проектирование и системный подход, и совершенно не знакомых с архитектрурой Windows, пал их жертвой. Началось бессмылсленное использование HKLM, HKCU и т.д. Но, вы наверняка знаете, про ресурс govnokod.ru. Ведь это же не проблема предствавленных там ЯП, что ими так пользуются?

                                                        Я вот сейчас смотрю на проблему конфигов в *nix, там все на файлах. Так вот проблем меньше от этого не становится, все конфиги в разных местах, разных форматов (в форматах просто феерия какая-то)
                                                          0
                                                          Не обобщайте про *nix, в той же *BSD сто лет уже конфиги в одних и тех же местах, что нельзя сказать про linux, вот там как раз бардак.
                                                            0
                                                            Вы правы, погорячился, я могу только про Ubuntu и Debian говорить.
                                                              0
                                                              а пример можно? я что-то не помню конфигов вне /etc и /home/user (если софт правильно ставить)
                                                                0
                                                                Во-во. Вы сами его и привели :)
                                                                  +1
                                                                  эм… /etc глобальные конфиги. /home/user — для каждого юзера отдельно. где бардак? зачем мне править /etc/wgetrc, если я могу править /home/user/.wgetrc
                                                                    +1
                                                                    А, то есть это типа HKLM (/etc) и HKCU (/home/user)?
                                                                      0
                                                                      ну, строго говоря, в линуксе бардак всё-же есть, по крайней мере, кроме приведённых вами
                                                                      /etc/
                                                                      /home/user/
                                                                      есть ещё
                                                                      /home/user/.appdata/ #Adobe Air приложения
                                                                      /home/user/.config/
                                                                      /home/user/.gconf/
                                                                      /home/user/.gnome2/

                                                                      причём, например, папка file-roller есть и в /home/user/.gconf/, и в /home/user/.gnome2/
                                                                      P.S. Неужели во FreeBSD не так устроено? Я честно не в курсе.
                                                                    0
                                                                    Это бардак?
                                                                    Реестр замусоривается и тяжело чиститься. Нет удобных инструментов, а в том же Ubuntu достаточно удалить каталог и нет проблем.
                                                                      0
                                                                      И что вам с этого бардака в реестре? Вы верите в миф что компьютер начинает медленнее работать?
                                                                        0
                                                                        Я не верю, я знаю ;)
                                                                        А на линуксе вот уже три года все летает =)
                                                                          0
                                                                          дайте пруфлинк :) не верю я в то что виндовс начинает _ощутимо_ меленнее работать из-за того, что там 400 лишних значений записано.
                                                                            0
                                                                            «Чем дольше ваш компьютер работает без переустановки, тем сильнее разрастаются файлы реестра. Это одна из особенностей Windows и со временем она может привести к снижению производительности компьютера.»
                                                                            support.microsoft.com/kb/835823/ru
                                                                              0
                                                                              реестр — он как энтропия — всегда растет ;-)
                                                                                0
                                                                                Тут не совсем понятно что именно растет.

                                                                                Если речь идет о размере хранилища (ну файлы эти), то ничего страшного. Свободное место может использоваться повторно. Есть и дефрагментаторы реестра, которые позволяют повысить вероятность повторного использования.

                                                                                Если речь о самом контенте то это кривизна (де)инсталяторов, и я не думаю что переход на ФС тут кардинально что-то меняет.
                                                                                  0
                                                                                  Это 2004 год и

                                                                                  Информация в данной статье применима к:

                                                                                  * Microsoft Windows 98 Standard Edition
                                                                                  * Microsoft Windows 98 Second Edition

                                                                                  (с)

                                                                                  Тогда были совсем другие мощности. Не уверен, что сейчас энтропия реестра _ощутимо_ влияет на производительность.
                                                                            0
                                                                            Ну есть же альтернативные редакторы реестра, в них, помнится, добавляли тонны плюшек. Вот вам и удобные инструменты.

                                                                            Руками лезть в реестр? Зачем? Среднему программисту достаточно складывать настройки программы в (HKLU|HKLM)/Software/company/appname. Если нужны специальные случаи (напр. регистрация COM-объектов и т.п.) — есть спец интерфейсы и консольные утилиты.

                                                                            Мне, как прикладному программисту, важно какое-нибудь хранилище для настроек. А как оно внутри организовано — это уже проблемы операционной системы и заботы других людей.
                                                                      0
                                                                      Хотя думаю феерия форматов там ровно такая же.
                                                          • UFO just landed and posted this here
                                                              0
                                                              Выше ответил. По поводу прав: предположим, есть программа. Почему-то падает с Security Exception. Есть подозрение на реестр. Вопрос — как настроить права?
                                                              • UFO just landed and posted this here
                                                                  0
                                                                  Дык и для IT проблема Security Exception не большая проблема, есть же инструменты вроде Application Compatibility Toolkit, если не ошибаюсь — как раз для IT персонала (там анализ можно сделать куда лезет ПО) и создания «заплаток» + система перенаправления в UAC работает прозрачно… конечно, если ПО «правильное» (по мнению M$), то такого изврата не потребуется…
                                                            +5
                                                            Вы это поймете сами, когда решите перенести настройки приложений на новый комп со свежепоставленнос ОС.

                                                            Если все настройки хранятся в AppData и им подобных, перенос сведется к копированию папок.

                                                            Если настройки хранятся в реестре, то вам придется долго бегать по HKCU и HKLM в поисках настроек своего приложения, затем экспортировать их в reg-file и исполнять этот рег-файл уже на новой машине.
                                                              +2
                                                              Перенос пользователя в винде отлично переносит HKCU с одной машины на другую.
                                                                0
                                                                А ежели одну прогу нада перенести? Ладно бы реестр был набором xmlек как gconf, а там на деле вообще чёрти что
                                                              –1
                                                              Систему переустанавливали хоть раз? Не замечали, что настройки сбрасываются на дефолтные.
                                                              А если в ФС хранится, то все настройки остаются ;)
                                                                +1
                                                                А вы профиль бекапить пробовали перед переустановкой? Если бекапить то программы, поддерживающие хранение настроек в реестре в HKCU остаются.
                                                                  0
                                                                  Не пробовал, т.к. если понадобилось переустанавливать — значит система уже совсем не грузится.
                                                              +8
                                                              Большей загадкой является то, зачем вообще надо было придумывать реестр, который по сути является ущербной файловой системой, и API для работы с ним — который по сути является ущербным интерфейсом для работы с ущербной файловой системой.
                                                                –1
                                                                OLE, COM, ActiveX и иже с ними. Закончилось все былинным провалом, но теперь уже никуда не деться.
                                                                  +1
                                                                  Ну OLE, COM, ActiveX живут и здравствуют, в чем провал-то? В той-же Win7 DirectX 11, Direct2D и новые GUI API — чистый COM.
                                                                    +1
                                                                    И это всёравно не отменяет былинную кривость сиих технологий, особенно ActiveX
                                                                      +2
                                                                      Про ActiveX не спорю, но COM вполне неплохая вещь — по крайней мере позволяет использовать объектный API независимо от языка программирования, а это намного удобней в сравнении с процедурными API, для которых приходиться писать объектный костыль (вспоминая Win32).
                                                                      0
                                                                      COM там только снаружи, для совместимости. Внутри уже давно не COM — по крайней мере, время жизни компонент управляется уже не по-комовски.
                                                                        0
                                                                        Наверно в MS просто напортачили с интерфейсом IUnknown, когда писали новые API )))
                                                                          0
                                                                          =)
                                                                          Не, тут 2 причины:
                                                                          а) Dx7 действительно был COM-овским;
                                                                          б) COM-like стиль обработки ошибок (через HRESULT/SUCCEEDED(hr)) достаточно удобен для использования в процедурном языке типа Cи и принят стандартом внутри прикладных подсистем Windows. Ну и наружу, соответственно, торчат HRESULTы
                                                                        0
                                                                        Как и в WinXP, как и в Win95… С чистым COM жить можно, но для многих задач он попросту слишком сложен. Даже встроенный reference counting не всегда нужен: для того же DirectX все равно обычно пишутся более удобные объектные обертки:)
                                                                          0
                                                                          Удобная объектная обертка поверх DirectX обычно называется графичиским движком :)
                                                                            0
                                                                            пардон… графическим
                                                                              0
                                                                              Именно:)
                                                                        +3
                                                                        Реестр не ФС, реестр — виртуальная иерархическая БД с разнородными по своей природе узлами — некоторые из них читаются из файлов, некоторые выставляются бутлоадером системы, некоторые — существуют только в памяти обеспечивающих их служб. API, соответственно, тоже далек от ФС.

                                                                        Реестр вообще предполагался для использования исключительно внутри ОС. Ошибка то, что к нему появился public API.
                                                                          0
                                                                          Реестр бы отлично работал, если бы в винде не было вакханалии с отсутствием системы пользователей, групп и прав. Тогда бы все настроечки лежали в HKLU и было бы всем большое счастье.
                                                                          +2
                                                                          Потому что он бысчтрее. чем чмтать и парсить тексоые файлы, как в юниксах. И формат хранения данных единообразный.
                                                                        • UFO just landed and posted this here
                                                                          +1
                                                                          Я не понимаю почему вы говорите о конкретном положении в ФС, а о реестре как едином целом. Также не понимаю почему упоминают о проблеме прав на запись в реестр в целом, а в ФС рассматривают различные размещения. Реестр так же как и ФС поддерживает индивидуальные права для различных размещений. Есть HKCU же.

                                                                          И заодно по содержимому поста: это неправильно, указывать пути для различных папок пользователя в конкретных ОС. Их нужно получать апи-средствами во время работы программы (или читать из переменных окружения, что не так «чисто», но может оказаться более гибким для админа)
                                                                          +11
                                                                          всегда удивляло стремление многих программ хранить свои данные в папке «My Documents», иногда в этом есть смысл, но когда игры свои севы там хранят, или программы конфиги…
                                                                          в общем то это наверняка одна из причин почему многие этой папкой пользоваться перестали
                                                                            0
                                                                            С одной стороны не логично, с другой уже который год переустанавливая систему я не волнуюсь о сохранности моих колоний в Age Of Empires.
                                                                              –3
                                                                              *не в теме* А разве винду нельзя переустановить, не затрагивая My Documents?
                                                                                –5
                                                                                Вообще-то можно. Надо с помощю какого-то там (не помню) твикера (или же в реестре) задать путь к папке Мои Документы. Но после переустановки надо снова ковырятся в настройках. Монтирования, такого как в линуксе, к сожалению нет.

                                                                                П.С. Это снова по старой памяти, счас не знаю как.
                                                                                  +2
                                                                                  Во блин, а я так привык носить /home не отдельной партиции…
                                                                                    0
                                                                                    Он врёт. Монтирование в NTFS есть — у меня "/home" всю жизнь лежит на отдельном винте.
                                                                                      +2
                                                                                      при установке этого задать нельзя, надо потом ручками.
                                                                                    +2
                                                                                    Вы извращенец. В свойствах Моих документов можно указать любую папку для них.
                                                                                      0
                                                                                      гыг, а некоторые софтописатели, не пользуются относительными путями, то есть пользуются, но для сохранения чего нить используют переменную не %mydocuments%, а %user%/mydocuments
                                                                                      (точно как пишуться переменные влом вспоминать) и результат получается ахрененый :)
                                                                                        0
                                                                                        если в свойствах МоихДокументов задать иной путь, то произойдет перемещение этой папки и в дальнейшем, глобольная переменная пути будет указывать куда положено
                                                                                          +2
                                                                                          глобальная да, а вот а %user%/mydocuments будет указывать не туда… :( я про это и говорю, у некоторых руки растут… гм…
                                                                                        –2
                                                                                        Ну извиняюсь… Когда я этой виндой пользовался… Не припомню…
                                                                                          +1
                                                                                          + В реестре можно почти все пути системных папок менять здесь:

                                                                                          HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
                                                                                          0
                                                                                          И это тоже (как реестр) устарело нехило :). Задать расположение всех пользовательских папок начиная с висты можно просто в свойствах этой папки. Кроме того в висте же появился папка для сейвов в профиле пользователя
                                                                                            –4
                                                                                            /etc/fstab не?
                                                                                              +2
                                                                                              я смотрю вы упорно пытаетесь развести холивар сразу в нескольких ветках комментариев :)
                                                                                                +4
                                                                                                молодец, вые*нулся.
                                                                                                0
                                                                                                Кроме того в висте же появился папка для сейвов в профиле пользователя

                                                                                                Только сейвы там почти никто не хранит :(
                                                                                                  0
                                                                                                  пока да (
                                                                                                0
                                                                                                Монтирование разделов (томов) в папки NTFS было, наверное, всегда :)
                                                                                                Я обычно монтирую все свои диски в папки на диске С: — удобно, да ещё и вкупе с симлинками можно как хочешь сконфигурировать файловую структуру
                                                                                                  0
                                                                                                  Знаю, но при установке системы такого нет. В линуксе при установке указыватся что куда монтировать.
                                                                                                    +2
                                                                                                    может потому что при установке это большинству пользователей нафиг не нужно?
                                                                                                0
                                                                                                Я вобще-то сказал что так и делаю, потому и рад, что некоторые игры хранят настройки в Моих документах.
                                                                                                0
                                                                                                User\Application Data

                                                                                                лично я при переустановке винды, сохраняю всю папку юзер, а не только майдокументс… потом все что нужно из нее копирую в новую систему, а так я повторяю, из-за подобных софтописателей, функционал папки майдокументс стремится к нулю…
                                                                                                0
                                                                                                может потому что она находится на системном разделе, который нередко форматится при переустановке винды. проще все хранить на диске Д
                                                                                                –6
                                                                                                User\Application Data всегда открыт для записи, даже если у пользователя самые минимальные права, так что с этим местом не прогадаете точно. Хотя «по-джентльменски» (чтобы не мусорить) лучше хранить всё в директории с программой, заодно она ещё и портабольной будет.
                                                                                                  +4
                                                                                                  Как раз-таки в директории с программой и не будет портабельности — если отключена UAC>виртуализация директорий, то программа будет тупо падать при запуске не из-под админа.
                                                                                                    +3
                                                                                                    … заодно пользователь будет UAC отключать чтоб програмка работала. ну-ну
                                                                                                      +1
                                                                                                      С портаблой я поступаю проще, программа ищет в своей директории файл с именем portable и, если находит его, сохраняет свои настройки в папке программы, если не находит — работает с Application Data.
                                                                                                      +22
                                                                                                      ~/.program_name
                                                                                                        0
                                                                                                        Согласен :)
                                                                                                          –2
                                                                                                          Воистину. А все вот эти метания «где хранить» — исключительно из-за отсутствия нормальной организации структуры каталогов в винде, что есть, ИМХО, совсем плохо.
                                                                                                          • UFO just landed and posted this here
                                                                                                              +3
                                                                                                              Ставить надо в /usr/local, внешние диски, ествественно в /media.
                                                                                                                0
                                                                                                                угу, угу. а если надо ставить программы не как администратору (игрушки там)? у коммерческих хотя бы есть инсталляторы.

                                                                                                                репозитории — хорошо. но иногда хочется, чтобы можно было поставить софтину из репозитория в ~/ а не в систему. кто знает что из существующего такое умеет подскажите :)
                                                                                                                  +1
                                                                                                                  ~/bin отменили что ли?
                                                                                                                    –1
                                                                                                                    «легким движением ./configure любая система превращается в slackware». про префиксы и прочие хитрости я знаю.

                                                                                                                    про ~/bin я знаю, но это не то, что мне надо. я хочу что-то типа «pacman --user-install -S openarena»
                                                                                                                    0
                                                                                                                    Debian. Только магия dpkg сложна и требует вдумчивого курения распечаток документации.
                                                                                                                  +3
                                                                                                                  Если ставлю софт которого нет в портажах использую /opt, чтобы потом проще было удалять.
                                                                                                                  Т.к. предпочитаю монтировать руками — использую /mnt постаринке.
                                                                                                                  А куда портаж ставит софт… ну тут по разному все зависит от того что за пакет.
                                                                                                                    0
                                                                                                                    Пакеты сами распихивают свои исполняемые файлы в /usr/bin(большая часть софта), /bin (то, что можно назвать стандартным (системным) софтом) или /usr/sbin (/sbin)(софт, для работы из-под root`а). Некоторый проприетарный софт ставится в /opt (как правило самим пользователем), туда же могут ставятся пакеты от других дистрибутивов, самосбор чаще всего в /usr/local/bin. Пара-тройка вещей в домашний каталог, win-софт в ~/.wine.
                                                                                                                    Диски в /mnt. Флэшки-камеры в /media.
                                                                                                                    • UFO just landed and posted this here
                                                                                                                      0
                                                                                                                      Да нормальная структура каталогов в винде. А эти метания — просто попытки изобрести собственный велосипед и нежелание читать документацию.
                                                                                                                      +3
                                                                                                                      ~/.config/program_name, имхо посимпатичнее вариант :)
                                                                                                                        +1
                                                                                                                        Тут единой договорённости нет пока.
                                                                                                                          0
                                                                                                                          и чем же тогда у вас лучше чем в винде? :)
                                                                                                                            +8
                                                                                                                            Ничем не лучше :)
                                                                                                                        0
                                                                                                                        а потом засранный /home/username. я привык к mc и листать эту кучу ~/.programname иногда долго приходится

                                                                                                                        скорее что-то типа ~/.appsettings/.programname некоторые так и поступают
                                                                                                                          +1
                                                                                                                          По дефолту файлы с. скрыты или вы под рутом кучу приложений ставите?
                                                                                                                            0
                                                                                                                            скрыты если смотреть через ls и через графические приблуды. mc все показывает и это правильно.
                                                                                                                              0
                                                                                                                              Ну я не пользуюсь mc, поэтому не в курсе. Но что-то мне подсказывает, что можно скрыть.
                                                                                                                                0
                                                                                                                                В ls можно увидеть дав ключик -a

                                                                                                                                $ ls -la
                                                                                                                                  0
                                                                                                                                  Настройки -> конфигурация -> убрать галочку «Показывать скрытые файлы».

                                                                                                                                  Вообще я тоже сейчас немного удивился вашему комментарию — в Debian'e по умолчанию для всех пользователей кроме root этой галочки нет. В убунте сейчас посмотрел — стоит по дефолту.
                                                                                                                              +1
                                                                                                                              Мне тоже *nix концепция больше нравится.
                                                                                                                              • UFO just landed and posted this here
                                                                                                                                  –1
                                                                                                                                  Они скрытые и вы о низ знать ничего не должны.
                                                                                                                                  +1
                                                                                                                                  ~/App_Data :)
                                                                                                                                  0
                                                                                                                                  Считаю, что установщик должен давать возможность выбирать место хранения настроек программы.
                                                                                                                                    +7
                                                                                                                                    А где хранить место, где хранятся настройки?
                                                                                                                                      –4
                                                                                                                                      Полагаю, в папке с самой программой. Я плохо в этом разбираюсь, но, думаю, создать при установке файл с этой настройкой проблемой не будет. Впрочем, эту настройку даже не обязательно где-то хранить: программа может просто по очереди проверять возможные места.
                                                                                                                                        +1
                                                                                                                                        А за что минусуют-то, кстати?

                                                                                                                                        Установка софта в Program Files идёт всё равно только из-под администратора, так что самый главный readonly ini-файл логично класть в папку программы (программе будет очень просто найти его независимо от версии ОС), а в нём уже прописать все глобальные настройки, вообще, и, где будут хранить свои настройки пользователи, и будут ли эти пользователи, или настройки глобальные для всего компа и т.п., в частности.

                                                                                                                                        Если же устанавливаешь программу обычным юзером, то, опять-таки, имеешь полный доступ к папке программы.

                                                                                                                                        Что-то типа:
                                                                                                                                        main.ini
                                                                                                                                        [usersettings]
                                                                                                                                        ;storage = registry
                                                                                                                                        storage = file
                                                                                                                                        dir = %appdata%/my_mega_app
                                                                                                                                        0
                                                                                                                                        В реестре. Уж один то ключик потянет эта бд.
                                                                                                                                          0
                                                                                                                                          Я не за этот вариант, если что, просто решение поставленного вопроса: )
                                                                                                                                      0
                                                                                                                                      Значит такая штука, есть system wide настройки и пользовательские. Грубо говоря system wide настройки применяются ко всем профилям, а юзерские лишь к конкретному, причем пользовательские имеют более высокий приоритет.
                                                                                                                                      Реестр для хранения настроек мягко говоря не слишком хорошо подходит, есть проблемы с его чисткой, нужны админские права на запись туда, да и вообще штука не слишком удачная, ибо очень хрупкая и совсем неудобная для редактирования. Поэтому system wide настройки нада хранить в ProgramData (или как там эта папка в современных виндах называется) или на худой конец в Program Files, что не является хорошей идеей.
                                                                                                                                      И ещё очень полезна возможность делать portable сборку проги, когда она хранит все настройки в папке с программой.
                                                                                                                                        0
                                                                                                                                        Про system wide это как раз последний пункт в статье. Про портативную версию я написал в комментарии выше, наверное проще создавать файл, находя который, программа будет работать в портативном режиме.
                                                                                                                                        Плюсы очевидны: не нужно делать отдельную сборку, пользователь сможет сам сделать из установленной программы портативную версию скопировав файлы в отдельную папку и создав в папке программы файл portable
                                                                                                                                          +1
                                                                                                                                          А мы так и делаем, ежели прога находит рядом со своим бинарником папку config, то пишет туда, плюс она будет искать конфиги в папках ../share /usr/share, и так далее… (насчет путей для винды я не определился ещё).
                                                                                                                                          Эти настройки являются так называемыми fallback настройками, ну или дефолтными, сделано это таким образом, чтобы проще было в готовой сборке дефолты изменять.
                                                                                                                                            0
                                                                                                                                            Пожалуй Ваш способ с папкой для для настроек программы лучше и очевиднее, чем тот, который использую я, с файлом. В конце концов пользователь может не понять, что это за странный пустой файл, удалит его и возникнут непонятки, а где мои настройки?
                                                                                                                                            Спасибо за наводку :)
                                                                                                                                          0
                                                                                                                                          Для записи в ветку HKCU не нужны права админа в системе. Поэтому пользовательские настройки можно хранить и там
                                                                                                                                            –1
                                                                                                                                            Да вот чистить не так удобно ибо regedit крайне неудобная утилита, а сторонние искать лень
                                                                                                                                          +1
                                                                                                                                          Еще изредка бывает необходимость иметь несколько версий одной и той же программы (например веб-разрботчику). Соответственно общие настройки могут мешать в случае несовместимости этих самых настроек, к примеру банально разных путей для плугинов.

                                                                                                                                          В этом плане понравилась возможность выбора, где хранить, у оперы в инсталлере.
                                                                                                                                            0
                                                                                                                                            Таким программам, я думаю, было бы еще интересно добавить ключ запуска, указывающий место, где слудет искать профили, например /settings «c:\users\...\profile path»
                                                                                                                                            • UFO just landed and posted this here
                                                                                                                                              –6
                                                                                                                                              ~/Library/Application Support/App Name — рабочие файлы программы
                                                                                                                                              ~/Library/Preferences — настройки

                                                                                                                                              Смешные проблемы у вин программеров :)

                                                                                                                                                +3
                                                                                                                                                Дык
                                                                                                                                                ~/.config/app
                                                                                                                                                ~/.local/config/app
                                                                                                                                                /usr/share/config/app (для неизменяемых дефолтов)
                                                                                                                                                В общем опять же всё от того, что в винде кто во что горазд всё делает, от того и проблемы
                                                                                                                                                  0
                                                                                                                                                  Макось детектед.
                                                                                                                                                    0
                                                                                                                                                    И что? Там всё логично по крайней мере, хотя там и сосуществуют два стиля хранения, Макосовский и родной никсовый, но особых граблей это не вносит
                                                                                                                                                      +1
                                                                                                                                                      По-моему тут топик про винду.
                                                                                                                                                        +1
                                                                                                                                                        Помоему тут топик про настройки
                                                                                                                                                          +1
                                                                                                                                                          Автор статьи ни слова не сказал про другие операционки. Я тоже много чего могу рассказать про хранение настроек в макоси или в юниксах, плюс особенности того, как именно это следует делать в дебиане по сравнению с другими линуксами.
                                                                                                                                                  +12
                                                                                                                                                  Моя мечта — когда все программы хранят все барахло нужное им для работы у себя в папке (аля portable)
                                                                                                                                                  Но я понимаю, что это удобно лично мне, и не соответствует идеологии совместного использования компьютера :)
                                                                                                                                                    +1
                                                                                                                                                    Не только вам. Это ещё страсть как удобно вирусне.
                                                                                                                                                      0
                                                                                                                                                      а я вообще не понимал почему все программы не хранят у себя в папке свои настройки, а только сейчас вспомнил что на компах часто по несколько пользователей (
                                                                                                                                                      а так постоянно стараюсь портейбл юзать. Или установить винду, понаставить всяких программ на отдельный диск и винду переустановить) многие будут продолжать работать, хотя связи с системой уже практически не будет
                                                                                                                                                        +1
                                                                                                                                                        Уважаю программы, которые дают сделать выбор — где хранить настройки. И не бьются в панике после переустановки системы
                                                                                                                                                          0
                                                                                                                                                          я уважаю программы которые дают право выбора вообще) а то есть некоторые программы которые без настроек практически а если и есть настройки то на уровне начинающего пользователя. ну понятно что заботятся о нубах которым пофиг на это, главное чтобы работало, но и о нас не надо забывать >_<
                                                                                                                                                            0
                                                                                                                                                            Это ведёт к страшному зоопарку и засумориванию. Выбор места хранения может быть полезен для пользовательских данных, навроде игровых сейвов, а для выбора папки хранения конфигов должен быть общесистемный способ указывать куда конфиги писать, ну или например как в Никсах возможность на отдельном разделе хранить всё это дело без граблей
                                                                                                                                                              0
                                                                                                                                                              Я бы выбирал везде опцию «хранить настройки в папке программы» и какой мусор?
                                                                                                                                                              Зато я всегда могу скинуть папку программы на флешку и не думать как она заработает в другом месте (и заработает ли вообще)
                                                                                                                                                                0
                                                                                                                                                                И что? я уже писал как из такой ситуации выходить
                                                                                                                                                              0
                                                                                                                                                              А не уважаю _прикладные_ программы, которые вообще имеют какие-то настройки. Самое больше, что я готов простить — это «Укажите папку, которую надо просканировать для (вставьте по вкусу)».
                                                                                                                                                          +3
                                                                                                                                                          вообще-то у всех современных фреймворках для разработки десктопного ПО есть стандартный API для хранения, использования и редактирования настроек. Так вот его и нужно использовать
                                                                                                                                                        • UFO just landed and posted this here
                                                                                                                                                            0
                                                                                                                                                            Спасибо за замечание, исправил
                                                                                                                                                            0
                                                                                                                                                            Эх, если бы все так и делали…

                                                                                                                                                            Не раз терял какие-либо настроечные файлы или сохранения игр после переустановки системы из-за того, что каждая программа сохраняет настройки там где ей вздумается.
                                                                                                                                                              0
                                                                                                                                                              Program Files
                                                                                                                                                              Хранить настройки в папке самой программы не рекомендуется, пользователю банально может просто не хватить прав на запись и чтение каталога программы. Плюс (вернее минус) настройки пользователей будут разделяемыми, никто не сможет настроить программу под себя или хранить в ней только персональные данные.

                                                                                                                                                              А еще за такое программерам надо отрубать руки…
                                                                                                                                                                +1
                                                                                                                                                                Иногда — да, иногда — нет.
                                                                                                                                                                Я, например, сто лет назад uTorrent поставил, конфиги храню рядом, в этой же папке, торент-файлы тут же, в отдельной папке внутри.
                                                                                                                                                                Подобные программы ложатся не в Program Files а в Programs и при переустановке перемещаются простым копированием.
                                                                                                                                                                Очень удобно.
                                                                                                                                                                Но это дома, мой компьютер, с которым «чё хочу — то ворочу», а это многое меняет.
                                                                                                                                                                  0
                                                                                                                                                                  А, ну да! Тот же uTorrent по умолчанию в AppData лезет, и использует локальный конфиг только если находит рядом с ехе-шником файлик с настройками
                                                                                                                                                                +1
                                                                                                                                                                Больше чтения официальных гайдов — меньше велосипедов, все уже давно за вас продумано.
                                                                                                                                                                  0
                                                                                                                                                                  Указали бы в статье системные переменные указывающие на эти папки. А то ктото еще кинется проверять версию винды и формировать абсолютные пути :)
                                                                                                                                                                    0
                                                                                                                                                                    Чем-то напоминает на гайдлайны у эппла.
                                                                                                                                                                      +6
                                                                                                                                                                      о как меня замучали эти настройки вечно пропадающие. впечь реесты. впечь аппликейшн даты. сжэчь!
                                                                                                                                                                      после поднятия венды, снова всё настраивать дико раздражает (бывает что-то пропустишь или не досмотришь), так что в последнее время я за портабле, где всё хранится постаринке — в папке с прогой и никаких многоюзерских изъёбств!
                                                                                                                                                                        0
                                                                                                                                                                        > всё хранится постаринке — в папке с прогой и никаких многоюзерских изъёбств!

                                                                                                                                                                        > после поднятия венды, снова всё настраивать дико раздражает (бывает что-то пропустишь или не досмотришь)

                                                                                                                                                                        Может просто перестать ссать против ветра, не придется дико раздражаться оттого, что всегда мокрый? ;)
                                                                                                                                                                          0
                                                                                                                                                                          Средство переноса файлов не помогло?
                                                                                                                                                                          0
                                                                                                                                                                          Можно делать так, что если в папке с программой есть файл конфига, то настройки хранятся там, если там этого файла нет, то в User\Application Data.

                                                                                                                                                                          По умолчанию хранить в User\Application Data, но если у пользователя достаточно прав, то он легко сделает прогу портабельной, скопировав оттуда настройки в папку с программой.
                                                                                                                                                                            –4
                                                                                                                                                                            /usr/share/%programname% или /etc/%programname%/
                                                                                                                                                                            –1
                                                                                                                                                                            как-то странно у вас пути к папкам прописаны.
                                                                                                                                                                            Во-первых, пути ко всем этим папкам можно поменять. у меня например документы, рабочий стол и application data хранятся на сервере.

                                                                                                                                                                            В винде к системным папкам привязаны переменные среды:
                                                                                                                                                                            Program Files — %PROGRAMFILES%
                                                                                                                                                                            My Documents — %USERPROFILE%\My documents
                                                                                                                                                                            User\Application Data — %APPDATA%
                                                                                                                                                                            All Users\Application data — %ALLUSERSPROFILE%\Application Data

                                                                                                                                                                            en.wikipedia.org/wiki/Environment_variable
                                                                                                                                                                              +1
                                                                                                                                                                              My Documents — %USERPROFILE%\My documents

                                                                                                                                                                              да да, вот про это выше я и говорю, жуть! руки за подобный метод поиска папки Мои документы отрывать, ее можно между прочим тоже положить в другое место, в папку на другом диске никак не привязанной к папке юзерпрофиль ;)
                                                                                                                                                                                0
                                                                                                                                                                                А на русской винде My Documents — это %USERPROFILE%\Мои документы

                                                                                                                                                                                Надо использовать спецфункции для получения нужного пути навроде SHGetFolderPath().
                                                                                                                                                                                  0
                                                                                                                                                                                  В испанской версии:
                                                                                                                                                                                  My Documents — %USERPROFILE%\Mis documentos
                                                                                                                                                                                  Application Data — Datos de Programa
                                                                                                                                                                                  –1
                                                                                                                                                                                  лучше всё хранить в папке программы.
                                                                                                                                                                                  чтоб потом было проще сделать портируемую версию.
                                                                                                                                                                                  да и если пользователь ставит программу не на диск C, то при переустановке системы придётся ставить заново, т.к. настройка «ушла».
                                                                                                                                                                                    0
                                                                                                                                                                                    Грабли
                                                                                                                                                                                      0
                                                                                                                                                                                      ваше мнение.
                                                                                                                                                                                      я десктопные приложения не пишу, чисто как пользователь говорю.
                                                                                                                                                                                        0
                                                                                                                                                                                        а если два пользователя на компьютере с разными настройками, то что делать?
                                                                                                                                                                                        а если работать не под админом то как? :) (ну это выше все озвучено)
                                                                                                                                                                                          –3
                                                                                                                                                                                          Вынуть руки из одного места и почитать доки, а под админом работать это моветон, хвалите Балмера, что для винды нету удобного порта «программы из одной строчки на Perl»
                                                                                                                                                                                            0
                                                                                                                                                                                            прежде чем грубить, найди знаки вопроса.
                                                                                                                                                                                            0
                                                                                                                                                                                            ну у меня до сих пор XP, админские права, так что не особо над этим задумываюсь.
                                                                                                                                                                                            а вот переустанавливать систему приходится регулярно.
                                                                                                                                                                                            по-моему, нужно дать возможность пользователю выбрать.
                                                                                                                                                                                            и в том числе директорию с программой.
                                                                                                                                                                                              +2
                                                                                                                                                                                              XP, админские права
                                                                                                                                                                                              =>
                                                                                                                                                                                              переустанавливать систему приходится регулярно
                                                                                                                                                                                                0
                                                                                                                                                                                                ))
                                                                                                                                                                                                да нет.
                                                                                                                                                                                                раз в полгода (ну в экстренном случае раз в 3 месяца).
                                                                                                                                                                                                просто софта много, времени мало.
                                                                                                                                                                                                лень опять же.
                                                                                                                                                                                                и поэтому на личном опыте убеждаюсь, что чаще пользуюсь программами, которые могут нормально работать без установки.
                                                                                                                                                                                                  +1
                                                                                                                                                                                                  Во во, сами блин срач привыкли разводить, а теперь ноете
                                                                                                                                                                                                    0
                                                                                                                                                                                                    у меня как правило, переставлять приходится именно из-за софта, а не из-за кривых рук.
                                                                                                                                                                                                      +1
                                                                                                                                                                                                      Неееет… у меня даже антивируса нет установленного.
                                                                                                                                                                                                      если что подозрительное — в виртуалке/ в sandboxie…
                                                                                                                                                                                                      как-то выработался опыт работы, что не лажу, где попало, опера перенесит все напасти левых сайтов спокойной, херни не гружу, типа «кодеков» и «антивирусов», программы только из офиц.источника, комментарии к ней тоже люблю пару посмотреть.

                                                                                                                                                                                                      И переустанавливаю не чаще раза в год — просто от того, что накаплывается мусор, левые библиотеки от ставших ненужными программ, написанными дураками, которые не могли сделать ее полностью удаляемой, и остатки мусора, которая винда создает для установщиков, мусора в тех самых app data и прочая, которые программы, работающие без установки, создают.

                                                                                                                                                                                                      Бывают, правда, мои эксперименты с системными файлами — типа там ресурсы менять и если система не запускается после моих действий — вперед за live cd… но это уже другое)
                                                                                                                                                                                            +2
                                                                                                                                                                                            Друзья, задаю вопрос, который меня мучает уже много лет :)
                                                                                                                                                                                            Поясните, пожалуйста, в чем преимущество хранения настроек в реестре вместо кофигурационного файла? Особенно это касается небольших программ, коих на компьютерах подавляющее большинство, но они все равно в основном хранят свои настройки в реестре.
                                                                                                                                                                                            • UFO just landed and posted this here
                                                                                                                                                                                              • UFO just landed and posted this here
                                                                                                                                                                                                  0
                                                                                                                                                                                                  а это еще вопрос — плюс это или минус ;-)
                                                                                                                                                                                                  0
                                                                                                                                                                                                  1. Но нет гибкости в выборе как хранить специфические настройки
                                                                                                                                                                                                  2. Но перечитать-то программе все равно придется значения? Не думаю что хоть кто-то из разработчиков предусматривает такой вариант развития — это скорее баг ;-)
                                                                                                                                                                                                  3. Ну, для ini есть «API» не хуже. И я бы не назвал это «легко».
                                                                                                                                                                                                  4. Только «сохранятся» все настройки всех программ. И что потом с этим (кстати, не маленьким) файлом делать? Сдается мне, если им (уж не знаю как) заменить текущий файл, то винда ляжет сразу же.
                                                                                                                                                                                                  5. Я не специалист, но сдается мне, что винда через полгода активного установки/удаления программ начинает тормозить именно из-за замусоренного реестра ибо (имхо — поправьте) реестр грузится в память.
                                                                                                                                                                                                  • UFO just landed and posted this here
                                                                                                                                                                                                    • UFO just landed and posted this here
                                                                                                                                                                                                      0
                                                                                                                                                                                                      — Всевозможны парсеры распространенные уже написаны.
                                                                                                                                                                                                      — Сомнительное преимущество — программа также может перечитывать файл…
                                                                                                                                                                                                      — Парсер тоже разнообразен))
                                                                                                                                                                                                      — И кучу мусора притянуть…

                                                                                                                                                                                                      • UFO just landed and posted this here
                                                                                                                                                                                                        +1
                                                                                                                                                                                                        по-моему, первый пункт весьма спорный, т.к. CSV, JSON, и прочее-прочее…
                                                                                                                                                                                                          0
                                                                                                                                                                                                          Согласен. Можно многопоточно/из разных приложений читать-писать в поле в реестре с меньшими проблемами, чем с файлом ФС.
                                                                                                                                                                                                          Насчёт NTUSER.DAT — спасибо, не знал.
                                                                                                                                                                                                            +1
                                                                                                                                                                                                            > Не нужно писать парсер конфигурационного файла

                                                                                                                                                                                                            В WinAPI есть функции для работы с ini файлами, так что писать парсер для конфига средней сложности не нужно
                                                                                                                                                                                                          0
                                                                                                                                                                                                          На конфетных осях — в NSUserDefaults
                                                                                                                                                                                                            –1
                                                                                                                                                                                                            Можно было бы хотя бы добавть в рассмотрение вариант «Папка программы»
                                                                                                                                                                                                              0
                                                                                                                                                                                                              чОрт, как я мог проглядеть О_о
                                                                                                                                                                                                              0
                                                                                                                                                                                                              С точки зрения пользователя — программы могут хранить свои настройки где угодно, но, блин, не в «Моих документах».
                                                                                                                                                                                                              Благодаря такой тенденции у многих программ, давно не пользуюсь этой папкой по назначению, отдав ее на съедение Windows и приложениям. А сами, собственно, документы, хранятся в D:\Documents

                                                                                                                                                                                                              Вообще, огорчает навязывание системой/программами своей иерархии каталогизации данных пользователю.

                                                                                                                                                                                                              Скажем, мне удобно хранить образы дисков в папке D:\ISO

                                                                                                                                                                                                              Тем не менее, UltraISO, которой я создаю/редактирую образы, с маниакальным упорством создает папку My ISO Files в папке «Мои документы».

                                                                                                                                                                                                              То же самое делает VMWare («My Virtual Machines»), хотя мне удобно хранить образы виртуальных операционных систем в D:\Virtuals и так далее.

                                                                                                                                                                                                              В результате, при открытии «Мои документы» там обнаруживается куча папок, которых ты не заказывал, мало того, после удаления они создаются снова, при каждом запуске той или иной программы.

                                                                                                                                                                                                              Конечно, мой алгоритм хранения и каталогизации данных покажется кому-то неудобным, кому-то извращенным и так далее. Но это мой компьютер, мои данные, и мне так удобнее и быстрее с ними работать. Очень жаль, что разработчики многих программных продуктов этого не понимают и пытаются навязать пользователю свою иерархию и классификацию, которая, возможно, удобна им, но не мне.
                                                                                                                                                                                                                0
                                                                                                                                                                                                                Вообще My Documents это неудачная и кривая попытка воспроизвести /home в Линуксе и /Users (или как то по другому, непомню точного названия) в Макоси
                                                                                                                                                                                                                Суть же первозданной идеи была в том, чтобы была домашняя папка пользователя с его личными данными, настройками и чем угодно, а не срач где попало, помимо этого срачу способствует доставшаяся с доса система именования дисков, разделов и проблемы с утилитами навроде mountvol, позволяющие как и везде смонтировать раздел в виде папки.
                                                                                                                                                                                                                  0
                                                                                                                                                                                                                  Ключевая ошибка видна еще с названия корневой папки для всего этого безобразия: Documents AND Settigns.

                                                                                                                                                                                                                  Documents нужно таки отдельно, а Settings — отдельно, я считаю :)
                                                                                                                                                                                                                    0
                                                                                                                                                                                                                    Нет, это только всё усложняет, и кстати в поздних виндах эта папка таки тоже теперь называется Users. Просто конфиги должны в скрытых папочках лежать, а данные в открытых и ещё самое правильное это держать все абсолютно данные в этой самой папочке, собственно в никсах так все и делают
                                                                                                                                                                                                                    0
                                                                                                                                                                                                                    Вообще-то суть «Моих документов» — это _дефолтная_ папка начинающего пользователя. Что бы он не спрашивал на разных компах, куда сохранился/сохранится его doc-файл. А не спрашивал: «что это за папка с названием моей любимой игры в окне выбора моих вордовых файлов»?

                                                                                                                                                                                                                    Единственный плюс выбора «My documents» в том, что в Win95/98 уже есть API-функция для определения этого пути, в отличие от функции для получении пути «Application Data».
                                                                                                                                                                                                                      0
                                                                                                                                                                                                                      Вот именно по этому сама её идея изначально кривая и неправильная была
                                                                                                                                                                                                                  +7
                                                                                                                                                                                                                  У меня стоит испанская XP и директории называются соответственно:

                                                                                                                                                                                                                  Archivos de Programa
                                                                                                                                                                                                                  Mis documentos
                                                                                                                                                                                                                  Datos de Programa
                                                                                                                                                                                                                  есть две папки: Configuración Local (с акцентом), где хранят данные все нормальные программы а также Configuracion Local (без акцента), куда предпочитает сбрасывает IE и Thunderbird (видимо UTF еще не все понимают)

                                                                                                                                                                                                                  Вместе с тем другие каталоги называются по-английски:
                                                                                                                                                                                                                  Documents and Settings
                                                                                                                                                                                                                  All Users
                                                                                                                                                                                                                  Local Service
                                                                                                                                                                                                                  Также имеется
                                                                                                                                                                                                                  User\Configuración Local\Application Data
                                                                                                                                                                                                                  User\Configuración Local\Datos de Programa

                                                                                                                                                                                                                  Помимо того, что в MS локализировали через пень-колоду, разработчики тупо верят, что во всем мире все папки будут называться как у них на компьютере.
                                                                                                                                                                                                                  Реально же названия фолдеров нужно брать отсюда:
                                                                                                                                                                                                                  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders (большое спасибо MS!). Например для получения имени папки «Мои документы» можно использовать команду:
                                                                                                                                                                                                                  reg query «HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders» /v personal

                                                                                                                                                                                                                  Hint: некоторые из этих фолдеров прописаны в переменных окружения, но не все.
                                                                                                                                                                                                                    +1
                                                                                                                                                                                                                    Для меня, как любителя портативных программ, конечно, лучше, если программа хранит все в своей папке… Жуть, как не люблю (хотя и редко делаю) переносить ключи из реестра, копаться в app data…

                                                                                                                                                                                                                    Грустно то, что изначально не продуманы пути хранения настроек…
                                                                                                                                                                                                                    даже с app data, localsett было намудрено…
                                                                                                                                                                                                                    куда проще было бы сделать
                                                                                                                                                                                                                    users/user/Settings/ — переносимые…
                                                                                                                                                                                                                    users/Temp/user/ — временные файлы и прочая…