Где сохраняются настройки программ

Примечание. Все упоминаемые в статье модули, функции и т.п. относятся к Delphi.

Нижеприведенный текст являет собой вольное изложение отдельных статей февральского выпуска Microsoft Platform SDK. Год 2001 от рождества Христова. При проектировании способов хранения настроек своей программы следует задаться тремя вопросами:

  • Что хранить?
  • Где хранить?
  • Как хранить?

Что хранить

Поскольку первая часть вопроса нам известна по определению, т.е. хранить мы будем настройки программы, то перейдем ко второй части вопроса. Ваша программа устанавливается на КОМПЬЮТЕР а пользуются ей ПОЛЬЗОВАТЕЛИ.

Соответственно все настройки разделяются на две части а то и на все три — настройки которые относятся к компьютеру в целом, настройки которые относятся ко всем локальным пользователям, настройки которые относятся к конкретному пользовател. В зависимости от специфики программы первая и вторая часть могут быть совмещены или разделены. Поэтому важно сделать логическое разделение — какие настройки вашей программы действительно специфичны для самого ПК, какие настройки должны прилагаться ко всем пользователям, какие должны прилагаться к конкретному пользователю. Кроме того Мокрософт рекомендует чтобы настройки учитывали возможную мобильность пользователя, т.е. для пользователя находящегося в разных местах, возможно потребуется иметь разные наборы настроек.

Как исправить MSCONFIG, не сохраняющий изменения в Windows 11/10

Где хранить

Вообще в голову приходят три вещи.

  • Хранить настройки в системном реестре.
  • Хранить настройки в каталоге куда установлена программа.
  • Хранить настройки в системном каталоге Windows.
  • Хранить настройка в домашнем каталоге пользователя.
  • Системный реестр.
  • Домашний каталог пользователя (точнее один из его подкаталогов).
  • Общий каталог для пользователей.
  • часть реестра HKEY_CURRENT_USER*
  • содержимое своего домашнего каталога.
  • содержимое временного каталога (который как правило находится внутри домашнего).
  • содержимое некого каталога или каталогов специально выделенного для этого администратором.

Системный реестр

С точки зрения хранения настроек программы системный реестр разделен на две части. Это ветви HKEY_CURRENT_USER для хранения настроек специфичных для пользователя, и HKEY_LOCAL_MACHINE для хранения настроек специфичных для всего ПК и соответственно всех пользователей, работающих с этим ПК.

Рекомендуемая структура ветвей для хранения настроек программы — HKEY_CURRENT_USERSoftwareCompany NameApplication NameVersion и соответственно HKEY_LOCAL_MACHINESoftwareCompany NameApplication NameVersion. Параметры Company Name, Application Name, Version желательно не хранить в виде hard-coded строк в коде программы а устанавливать в опциях проекта (ProjectOptionsVersion Info) и доставать впоследствии из ресурса с помощью той же библиотеки RxLib.

Читайте также:
Что такое программа Microsoft open

Альтернативный путь выбирать данные о версии программы из ресурсов — использование Windows API (GetFileVersionInfo, GetFileVersionInfoSize, VerQueryValue). Программе следует расчитывать на то что доступ к подключам HKEY_LOCAL_MACHINE разрешен в режиме только для чтения, а доступ к подключам HKEY_CURRENT_USER допускает чтение, изменение и создание новых подключей и значений.

Реестр не сохраняет изменения, РЕШЕНО!!!

Программе следует расчитывать на то что нужных ей ключей может не оказаться в реестре или значения лежащие в реестре имеют неверный формат или недопустимые значения. В таком случае, вместо несуществующих или неверных значений настройки, программа должна использовать значения по умолчанию которые разработчик может «железно забить в код» или получить с помощью различных системных функций. Не следует использовать системный реестр для хранения больших кусков данных. Вместо этого лучше хранить объемные данные в отдельном файле, а в реестре запомнить имя этого файла.

Домашний каталог пользователя

Для хранения настроек слишком больших для того чтобы их размещать в реестре существуют специально выделенные каталоги внутри домашнего каталога пользователя. Эти каталоги обычно называются «специальными каталогами» и имеют имена Application Data и Local Settings. Полный путь к ним можно получить с помошью функций SHGetSpecialFolderPath или SHGetFolderPath.

Общий каталог пользователей

Обычно это каталог «Documents and SettingsAll users». Внутри него имеются такие-же подкаталоги для хранения настроек и данных программ но относящихся ко всем пользователям. Полный путь к ним можно также получить с помошью функций SHGetSpecialFolderPath или SHGetFolderPath.

Как хранить

Системный реестр

Для работы с системным реестром можно использовать функции Registry API общим числом около 40 штук, а можно использовать классы из Registry.pas — TRegistry, TRegistryIniFile, TRegIniFile. Особенно следует обратить внимание на TRegistryIniFile который предоставляет упрощенную модель доступа к системному реестру очень схожую с моделью работы с INI-файлами.

Это старый метод хранения настроек программ, но все еще применяющийся программистами. Настройки хранятся в текстовом файле в виде:

[Section1] Field1=Value1 Field2=Value2 . FieldN=ValueN [Section2] Field1=Value1 Field2=Value2 . FieldN=ValueN . [SectionN] Field1=Value1 Field2=Value2 . FieldN=ValueN

Для доступа к данным содержащимся в INI-файлах существуют классы из модуля IniFiles — TIniFile, TMemIniFile. Преимущество использования INI-файлов состоит в том что их можно легко подредактировать с помощью текстового редактора. Они обычно легче воспринимаются для прочтения нежели дерево ключей системного реестра.

Бинарные файлы настроек

Читайте также:
Сообщение на тему общие сведения и особенности работы антивирусной программы

Отдельно хочется поговорить о использовании бинарных файлов в качестве хранилища для настроек программы. Обычные мотивы любителей использовать бинарные файлы:

  • Экономится место.
  • Настройку можно спрятать от пользователя (сделать нечитабельной).

Первое глупо потому что информация о настройке занимает обычно немного места и экономия достигается мизерная. Второе глупо потому что невозможность просмотра и редактирования настроечных данных простыми средствами (текстовый редактор) или встроенными (редактор реестра) создает больше проблем как пользователю так разработчику, нежели пользы (причем весьма сомнительной) от того что кто-то не сможет прочитать что написано в файле. Кроме того использование бинарного файла нельзя назвать защитой от нежелательного просмотра, т.к. любой «продвинутый пользователь» все равно с помощью редактора бинарных файлов сможет просмотреть и разобраться в содержимом настройки.

Заключение

Почти вся эта информация была вычерпана из кладезя мудрости под названием Platform SDK (Software Development Kit), поставляемого в составе сборника документации MSDN (Microsoft Software Developer Network). Разработчикам настоятельно рекомендуется приобрести Platform SDK, это снимает огромную массу вопросов связанную с программированием под Windows.

Источник: codenet.ru

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

Программа на С# (но в принципе это не столь важно), до этого использовал стандартный app.config, быстро удобно, но его возможностей стало не хватать. Во первых параметров стало много: сохранение состояний всех окон, некоторых контролов, настройки самой программы, настройки подключения к серверу, которые надо шифровать ну и т.д. В общем решил написать свой велосипед, теперь думаю где это все хранить, и соответственно как реализовать.
На данный момент склоняюсь к созданию своего класса настроек и его бинарной сериализацией, но вот вопрос, где его хранить? Не хотелось бы его держать в папке с программой, и для каждого пользователя иметь отдельные настройки.

Отслеживать
задан 3 авг 2011 в 8:39
1,935 13 13 серебряных знаков 27 27 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Тогда храните в профиле текущего пользователя. А сериализацию лучше делать через xml, чтобы при необходимости можно было поправить конфиг руками.

Отслеживать
ответ дан 3 авг 2011 в 9:07
8,835 25 25 серебряных знаков 65 65 бронзовых знаков
Так и сделаю. Вот еще инфа по теме: habrahabr.ru/blogs/development/70922
3 авг 2011 в 11:10

На форуме был уже похожий вопрос, посмотрите, возможно найдете полезным

Отслеживать
ответ дан 3 авг 2011 в 10:09
Pavel Azanov Pavel Azanov
6,744 16 16 серебряных знаков 31 31 бронзовый знак

Читайте также:
Как сделать перезапуск программы python

  • c#
  • config
  • settings
    Важное на Мете

Связанные

Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник: ru.stackoverflow.com

Как сохранить настройки программ

Обычно после переустановки ОС перед нами встает один важный вопрос: с чего же начать? Тут главное – в короткий срок установить вновь все те программы, которые вам необходимы для работы. Для решения этой задачи существуют специальные программы.

Как сохранить настройки программ

Статьи по теме:

  • Как сохранить настройки программ
  • Как сохранить настройки при переустановке Windows
  • Как сохранить настройки utorrent

Инструкция

Найдите в сети интернет программу Niksaver, скачайте ее с одного из сайтов или файлообменников и установите ее на свой компьютер. Установка несложная и интуитивно понятная – выберите нужный каталог и нажмите кнопку «Готово» (Finish).

Запустите программу. В левой части окна программы Niksaver вы увидите список найденных программ, установленных на вашем компьютере и соответствующих внутренней базе данных Niksaver.

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

Измените путь к директории для сохранения файлов настроек программ на тот, что вам будет более удобен (по умолчанию путь стоит следующий: C:Documents and SettingsuserМои документыComputer Configuration).

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

Вы можете также пополнить список программ для экспортирования их настроек. Для этого в строке меню выберите пункт «Инструменты» (Tools) и далее выберите «Редактор конфигов» (Edit Configs). В открывшемся меню выберите программу из списка установленных на вашем компьютере программ, после чего укажите программе Niksaver ключи реестра и файлы настроек, относящиеся к выбранной программе.

Для того чтобы восстановить данные, кликните на пиктограмму папки со стрелочкой (Загрузить настройки) и укажите программе путь к нужному файлу настроек.

Источник: www.kakprosto.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru