0

基本上,我有一个 C# 应用程序,它具有某些我希望任何用户都能够更改的设置,但我希望这些设置适用于所有用户。(确切的实现是针对特定于计算机但不是特定于用户的项目,例如文件夹路径和 com 端口等)到目前为止,我已经使用 appSettings 实现了这一点,并且它运行良好,但是当用户没有权限时它会崩溃写入 Program Files 目录。

我正在寻找有关如何利用 appSettings、userSettings 或注册表中的值最好地处理这种情况的建议。我使用的任何解决方案都必须适用于非管理员用户以及管理员用户。对于这种类型的要求,什么被认为是“最佳实践”?

4

2 回答 2

2

我将尝试编写一个包含所有需要读取/写入的设置的 XML 文件。
该文件可以保存在众所周知的文件夹中,例如 ProgramData(使用 Enviroment.SpecialFolder.CommonApplicationData)

最简单的方法是使用数据表 WriteXml 和 ReadXml 的内置方法。
您可以使用数据表实现一个内部加载和保存设置的类,并提供检索和设置单个设置(数据表中的行)的方法;

public class MyAppSettings
{
    // Where to store your settings
    private DataTable _storage = null;

    public MyAppSettings()
    {
       string settingFile = Path.Combine(Environment.GetFolderPath
                            (Environment.SpecialFolder.CommonApplicationData), 
                            "MyAppName", "MyAppSettings.xml");
       _storage = new DataTable();
       _storage.ReadXml(settingFile);
    }
    public void Save()
    {
       string settingFile = Path.Combine(Environment.GetFolderPath
                            (Environment.SpecialFolder.CommonApplicationData), 
                            "MyAppName", "MyAppSettings.xml");
       _storage.WriteXml(settingFile);
    }

    public string GetValue(string settingName)
    {
        // Code to search the base table
    }
    public void SetValue(string settingName, string settingValue)
    {
        // Code to update/insert the base table
    }
}
于 2012-08-27T20:44:25.667 回答
1

您应该为此使用应用程序设置

Visual Studio提供了良好的支持并使用您声明的属性(设置)自动生成访问器类。

于 2012-08-27T20:25:57.640 回答