我需要让用户有能力更改应用程序设置,例如应用程序数据库的位置。我注意到应用程序设置在运行时是只读的,但这需要在应用程序范围内,而不是针对特定用户。如何在windows.forms中持久保存应用程序级别的连接字符串,并且可以在运行时更改?
我需要让用户有能力更改应用程序设置,例如应用程序数据库的位置。我注意到应用程序设置在运行时是只读的,但这需要在应用程序范围内,而不是针对特定用户。如何在windows.forms中持久保存应用程序级别的连接字符串,并且可以在运行时更改?
您可以使用
ConfigurationManager.AppSettings.Set()
另外,ConnectionStringSettings.ConnectionString 属性也可以被设置。
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings.Add("test","tada");
config.Save(ConfigurationSaveMode.Minimal, true);
在使用较新的Settings类时,框架中没有直接的方法 - 您可以使用Settings支持保存用户级别的设置,但不是应用程序/机器级别。最简单的方法是XmlSerialize一个类并将其存储在所有用户都具有写访问权限的目录中,例如Public Documents文件夹(程序目录不应被写入),例如Environment.SpecialFolder.CommonApplicationData
编辑:是的,旧的appSettings机制有一种写入方式,但这是个坏消息 - 较新的Settings工具省略了此功能,因为尝试写入Program Files中的配置文件对于很多原因来说都是个坏消息。
%AppData%
目录是用户级别的,而不是应用程序级别的 - 这和 "AppSettings 目录" 是一样的吗? - BlueRaja - Danny Pflughoeft