Настройки программы
Есть необходимость хранить настройки программы (пути, переменные). Больше всего подходит вариант "настройки хранятся в папке с программой". Что лучше для этого использовать? Я думаю, может xml?
Есть необходимость хранить настройки программы (пути, переменные). Больше всего подходит вариант "настройки хранятся в папке с программой". Что лучше для этого использовать? Я думаю, может xml?
Сложно что-то посоветовать, не зная конкретики.
Если это настройки, которые не будут меняться на конкретной машине, либо будут меняться только админом (грубо говоря, человеком с подходящей квалификацией) - удобно их хранить в файле app.config
Если это настройки, которые будут меняться из самой программы, то вариантов куча, можно, например, хранить в реестре системы. Можно действительно в файле в папке с программой. Тогда, в общем, пофигу, в каком виде хранить: хоть в бинарнике, хоть в ini-файле - вопрос простоты парсинга и сохранения настроек и читабельности файла (если есть такая необходимость). Xml-формат хорош тем, что достаточно хорошо читаем и при этом можно очень легко сделать xml-сериализацию (десериализацию) объекта с настройками.
Реестр лучше не использовать, т.к. в случае, если пользователь будет с ограниченным доступом вы просто не сможете записать значения в реестр. В идеале лучше написать свой класс для сериализации/чтения настроек приложения, но также можно использовать Application.Properties.Settings (см. http://msdn.microsoft.com/en-us/library/aa730869%28v=vs.80%29.aspx)
Стандартные подходы такие:
В большинстве случаев возможностей Properties достаточно.
Вообще хранить настройки в папке с программой не всегда разумно, так как здесь, также как и с реестром, возникают проблемы с правами того, или иного пользователя. В своих проектах я храню настроки так:
Глобальные настройки (для всех пользователей) хранятся в реестре (ветка HKLM), их может менять только администратор.
Настройки для конкретного пользователя я храню тоже в реестре, но в ветке HKCU, так как к ней есть доступ.
Также, в некоторых проектах храню настройки для конкретного пользователя в INI-файле, в его документах, либо в общем файле в публичных документах.
Сейчас также рассматриваю вариант хранения настроек на сервере.
Вообще при выборе места хранения всегда руководствуюсь несколькими пунктами: