正确的位置来存储所有用户的设置

时间:2012-10-17 14:56:09

标签: c# configurationmanager

我正在开发的软件需要为用户存储一些全局设置。 目前,我正在使用此方法将所有内容存储在用户下的appdata中:

public virtual void Load()
{
    try
    {
        lock (ConfigLock)
        {
            if (Config != null)
                Config.Save(ConfigurationSaveMode.Full);

            Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming);
        }
    }
    catch (Exception ex)
    {
        RicoLog.Instance.Error("UserConfig", ex.Message);
    }
}

public virtual void AddSection(string name, ConfigurationSection section)
{
    if (Config == null)
        Load();

    try
    {
        lock (ConfigLock)
        {
            section.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToLocalUser;
            Config.Sections.Add(name, section);
            Save(section);
        }
    }
    catch (Exception ex)
    {
        RicoLog.Instance.Error("UserConfig", ex.Message);
    }
}

其余的只是从配置中读出数据的功能。

以前,应用程序存储在自定义文件夹下,但现在需求已更改,我们需要将其放在Program Files下。当我们使用自定义文件夹时,存储全局设置就像执行这两个更改一样简单,因为应用程序具有对该文件夹的写入权限:

Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

section.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineOnly;

但是,在Program Files中,您需要成为管理员才能在那里写。那么,我如何存储全局应用程序数据?或者更确切地说,这件事的最佳做法是什么?

另外,我知道程序数据,如果这是正确的位置,我如何使用ConfigurationManager存储配置?我宁愿不重写整个配置逻辑。

0 个答案:

没有答案