Я пытаюсь сохранить настройки пользователя в файле конфигурации с помощью ConfigurationManager.
Я хочу использовать эти параметры только для пользователя, потому что изменения приложения не могут быть сохранены в Vista/Win 7 без прав администратора.
Кажется, это дает мне конфигурацию пользователя, которая, как представляется, сохраняется здесь в Win 7 ([Drive]:\Users\[Username]\AppData\Local\[ApplicationName]\[AssemblyName] [hash]\[Version \)
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
Всякий раз, когда я пытаюсь сохранить любые изменения в этой конфигурации, я получаю это исключение:
InnerException: System.InvalidOperationException
Message="ConfigurationSection properties cannot be edited when locked."
Source="System.Configuration"
StackTrace:
at System.Configuration.SectionInformation.VerifyIsEditable()
at System.Configuration.MgmtConfigurationRecord.GetConfigDefinitionUpdates(Boolean requireUpdates, ConfigurationSaveMode saveMode, Boolean forceSaveAll, ConfigDefinitionUpdates& definitionUpdates, ArrayList& configSourceUpdates)
Я попытался добавить настраиваемую конфигурацию в эту конфигурацию. Я попытался добавить в AppSettingsSection. Всякий раз, когда я вызываю config.Save()
, он выдает исключение выше.
Любые идеи?
Я пробовал использовать класс ApplicationSettingsBase с помощью конструктора Project- > Settings, но, похоже, вы не можете сохранить в нем специальные типы. Я хочу аналогичную функциональность с возможностью сохранения пользовательских типов.