6

将应用程序的用户设置存储在

Properties.Settings.Default

与将其存储在注册表中说

HKEY_CURRENT_USER\Software\{Application Name}

4

4 回答 4

4

属性.设置.默认

在执行之间存储应用程序状态的常用技术是将其写入磁盘。有多种方法可以做到这一点,微软通过在 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 文档页面。正如其他人提到的那样,使用注册表有利有弊,但我认为值得再次说明的是,注册表是一个“安全”位置,您的用户将需要获得权限才能从其中读取写入,而设置文件不需要那些权限。

于 2013-04-02T13:56:13.390 回答
3

不同之处在于注册表就是注册表。而 Properties.Settings.Default 保存到 AppData 目录中的配置文件。

我个人根本不喜欢与注册表合作。这只是我从 Windows 98 时代遗留下来的恐惧症。无论如何,使用注册表并不是一个很好的体验。关键名称很丑陋,并且有很多引起混乱的可能性。

于 2013-04-02T13:11:05.400 回答
1

来自codehill.com

在 .NET Framework 应用程序设置保存在 INI 文件和 Windows 注册表中之前。但是 .NET Framework 引入了一种使用 XML 文件的更简单的方法。该文件具有程序集的名称和 .exe.config 扩展名,并位于应用程序的文件夹中。这种方式更简洁,因为当卸载或删除应用程序时,最终用户不必担心 Windows 目录中遗留的注册表项或 INI 文件。

于 2013-04-02T13:12:56.167 回答
0

保存诸如 Properties.Settings.Default 之类的设置是唯一正确的方法。

注册表是不行的。您不确定使用您的应用程序的用户是否有足够的权限写入注册表。

于 2013-04-02T12:58:55.573 回答