Доброго времени суток!
Может кому пригодится мое решение обозначенной задачи, код приблизительный, просьба не придираться...
Я руководствовался при ее решении следующими требованиями: писать настройки пользователя в user.config и использовать при этом функционал AppSettingsSection.
// открываем настройки пользователя
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
// добавляем секцию наших настроек, если ее нет.
if (config.Sections["MyUserSettings"] == null) {
AppSettingsSection section = new AppSettingsSection();
section.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToLocalUser;
config.Sections.Add("MyUserSettings", section);
}
// а далее можем спокойно оперировать настройками, писать, читать и т.д.
AppSettingsSection section = (AppSettingsSection)config.Sections["MyUserSettings"];
string value = section.Settings["Prop1"].Value; // если настройки нет, будет null вместо проперти вам, так что проверяйтесь
Таким образом, как видно из кода, я добавляю свою секцию типа AppSettingsSection, позволяю ей работать на уровне пользователя (по-умолчанию, уровень приложения) и тогда она у меня не будет заблокированной, как "официальная секция" config.AppSettings, и я смогу ее сохранять.
ConfigurationUserLevel.PerUserRoamingAndLocal и ConfigurationAllowExeDefinition.MachineToLocalUser можно сменить в зависимости от ваших задач на другой уровень.
Спасибо всем, кто мне ответил и сподвиг на это решение.