Несколько Приложений, Общие Настройки: Использовать реестр или основанную на XML конфигурацию?

Мой сценарий

У меня есть библиотека классов, которая будет названной из нескольких отдельных исполняемых приложений. Эта библиотека классов должна знать об адресе сервера базы данных (и много других параметров конфигурации, подлинной информации, и т.д.) к доступу. У меня есть приложение конфигурирования и приложение администрирования, отдельное от библиотеки классов, которая также должна знать и установить эти параметры конфигурации.

Мой вопрос

Это быть обычной практикой для хранения их пользователь определенные параметры конфигурации в реестре Windows, или это предпочтено, чтобы использовать типичный 'App.config' XML подход для библиотеки классов и позволить инструменту конфигурирования изменять и изменять его?

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

6
задан snicker 3 February 2010 в 17:15
поделиться

3 ответа

В моем конкретном случае эти специфические настройки конфигурации имело больше смысла хранить в реестре. Я не могу быть уверен, что наши пользователи установят приложения в те же места, и, как минимум, мне придется хранить местоположение "главного" XML файла конфигурации в реестре, чтобы другие приложения могли его найти.

Я просто создал класс с индексом для чтения/записи настроек конфигурации в реестр как Hashtable (string ponySetting = myRegistryObject["DefaultPonySetting"]) и назвал это делом дня. В любом случае, я ссылаюсь на основную сборку с этим классом во всех других приложениях. Huzzah

0
ответ дан 17 December 2019 в 02:28
поделиться

Я предпочитаю конфигурации xml настройкам реестра, потому что я могу просто создать класс и использовать xmlSerializer для открытия и сохранения прямо в мои классы.

Проверьте эту тему , чтобы получить аналогичный вопрос SO.

1
ответ дан 17 December 2019 в 02:28
поделиться

Лучше всего использовать файлы конфигурации XML в каталоге% appdata% пользователя.

Для этого есть ряд причин:

  1. Ваше приложение, скорее всего, будет установлено в Program Files. Если пользователь не предоставил (или не получил) права администратора для процесса вашего приложения, вы не сможете писать в файл.
  2. Я работал в средах с частичным доверием, где доступ к реестру просто невозможен. Клиент полностью отключил разрешения реестра для .NET Runtime на этом сервере.
  3. У вашего пользователя всегда должен быть доступ к своему собственному каталогу% appdata%. Вот пример:

     строка configFilePath = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData) + "myAppConfig.config"; 
    ExeConfigurationFileMap map = new ExeConfigurationFileMap (); 
    map.ExeConfigFileathname = configFileath ; 
    Конфигурация cfg = ConfigurationManager.OpenMappedExeConfiguration (map, ConfigurationUserLevel.None); 
    cfg.AppSettings.Settings.Add ("mySetting", "myValue!"); 
    cfg. Save (ConfigurationSaveMode.Modified); 
     
     // чтобы прочитать настройку обратно 
     
    string mySetting = cfg.AppSettings.Settings ["mySetting"]. Value; 
     // на этом этапе mySetting = "myValue!" 
     

Не забудьте добавить ссылку на System.Configuration v2.0.0.0 в свой проект ! Пространство имен System.Configuration по умолчанию не имеет всех требуемых классов.

5
ответ дан 17 December 2019 в 02:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: