将应用程序的用户设置存储在
Properties.Settings.Default
与将其存储在注册表中说
HKEY_CURRENT_USER\Software\{Application Name}
将应用程序的用户设置存储在
Properties.Settings.Default
与将其存储在注册表中说
HKEY_CURRENT_USER\Software\{Application Name}
属性.设置.默认
在执行之间存储应用程序状态的常用技术是将其写入磁盘。有多种方法可以做到这一点,微软通过在 System.Configuration 命名空间中引入类来帮助用户管理保存应用程序状态(设置),从而加入了游戏。
Properties.Settings.Default
是派生自 ApplicationSettingBase的类的静态实例,它管理设置到磁盘的读取和写入。用该属性标记的[UserScopedSetting]
属性保存到 C:\Users\user\AppData\Local\ComapnyName\Hashed_AppName\version 中的 XML 文件,用户可以读取和写入该文件。用该属性标记的[ApplicationScopedSetting]
属性保存到 app.config 文件中,并且只能读取。
基本设置文件如下所示:
class FormSettings : ApplicationSettingsBase
{
public WindowSettings() {}
public WindowSettings(string settingsKey) : base(settingsKey) {}
[UserScopedSettingAttribute()]
[DefaultSettingValueAttribute("MyDefaultName")]
public String Name
{
get { return (string)(this["Name"]); }
set { this["Name"] = value; }
}
}
您可以Properties.Settings.Default
在 UI 中的 Project Properties->Settings 下或以编程方式通过Properties.Settings.Default
.
登记处
Registry 是一个分层数据库,用于存储配置设置和选项,并将它们存储为键值对。有关更多信息,请参阅维基百科。
可以通过静态Microsoft.Win32.Registry类访问注册表,该类将允许您读取和写入值。例如:
public class RegistryExample
{
public static void Main()
{
const string rootUser = "HKEY_CURRENT_USER";
const string subkey = "RegistryExample";
const string keyName = String.Format("{0}\\{1}, userRoot, subkey);
Registry.SetValue(keyName, "MyRegistryValue", 1234);
}
}
有关示例,请参阅 MSDN 文档页面。正如其他人提到的那样,使用注册表有利有弊,但我认为值得再次说明的是,注册表是一个“安全”位置,您的用户将需要获得权限才能从其中读取写入,而设置文件不需要那些权限。
不同之处在于注册表就是注册表。而 Properties.Settings.Default 保存到 AppData 目录中的配置文件。
我个人根本不喜欢与注册表合作。这只是我从 Windows 98 时代遗留下来的恐惧症。无论如何,使用注册表并不是一个很好的体验。关键名称很丑陋,并且有很多引起混乱的可能性。
来自codehill.com:
在 .NET Framework 应用程序设置保存在 INI 文件和 Windows 注册表中之前。但是 .NET Framework 引入了一种使用 XML 文件的更简单的方法。该文件具有程序集的名称和 .exe.config 扩展名,并位于应用程序的文件夹中。这种方式更简洁,因为当卸载或删除应用程序时,最终用户不必担心 Windows 目录中遗留的注册表项或 INI 文件。
保存诸如 Properties.Settings.Default 之类的设置是唯一正确的方法。
注册表是不行的。您不确定使用您的应用程序的用户是否有足够的权限写入注册表。