Я хочу управлять пользовательскими настройками конфигурации в файле конфигурации приложения WPF (app.config).Во время настройки (MSI с использованием настраиваемых действий) я прошу пользователя ввести некоторые параметры конфигурации и хочу сохранить их в app.config.Также позволяет пользователю обновить эти настройки через окно конфигурации.Я попробовал следующие два подхода, но не сработал, как ожидалось.
Подход 1. Я добавил настраиваемые параметры в раздел appSettings файла app.config.Во время настройки я принимаю значения для этих параметров и записываю их в app.config с помощью ConfigurationManager.Работает нормально.Здесь конфигурация является общей для всех пользователей.
Проблема: из-за безопасности ОС Windows 7 не удается записать / обновить значение параметров конфигурации при запуске приложения пользователем и изменить его из окна конфигурации.Поскольку файл app.config хранится в разделе «Program Files», безопасность Win 7 не позволяет его изменять.Работает нормально, если я использую опцию «Запуск от имени администратора».
Подход 2: Сохраняемые настраиваемые параметры хранятся в Properties.Settings.Default (WPF Project -> Properties -> Settings), который добавляется в файл app.config в разделераздел userSettings / WPFSamples.Properties.Settings.Это решило проблему с безопасностью Windows 7, теперь пользователь может изменять значения настраиваемых параметров из окна конфигурации и обновлять их до файла настроек пользователя (C: / Users / DevUser1 / AppData / Local) с помощью Properties.Settings.Default.Этот подход позволяет хранить пользовательскую конфигурацию.
Проблема: при настройке я принимаю настраиваемые значения, но не могу записать его в файл конфигурации пользователя с помощью Properties.Settings.Default (Properties.Settings.Default.Save ()),Он не выдавал никаких исключений, но нигде не был записан, поскольку файл пользовательских настроек (C: / Users / DevUser1 / AppData / Local) не создается до тех пор, пока пользователь не запустит приложение, не изменит настраиваемые параметры и не сохранит его.