【发布时间】:2011-02-07 15:15:18
【问题描述】:
我正在尝试使用 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)
我已尝试向此配置添加自定义 ConfigurationSection。我尝试添加到 AppSettingsSection。每当我调用config.Save() 时,它都会抛出上面的异常。
有什么想法吗?
我尝试通过 Project->Settings 设计器使用 ApplicationSettingsBase 类,但您似乎无法使用它保存自定义类型。我想要具有保存自定义类型的类似功能。
【问题讨论】:
-
原来你可以通过 Project->Settings 设计器使用自定义类型。他们没有在类型对话框中列出它们,但是如果您输入正确的名称/命名空间,您可以使用任何您想要的类型。类型应该是 XmlSerializable 或可通过 TypeConverter 转换为字符串。
标签: c# .net configuration-files configurationmanager settings