Pull to refresh

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

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

Возможные папки, для хранения настроек и файлов программы:
  • 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). Обычные пользователи (не администраторы) имеют к этой папке доступ в режиме только для чтения.
Tags:
Hubs:
Total votes 117: ↑92 and ↓25+67
Comments286

Articles