0

我正在开发的软件需要为用户存储一些全局设置。目前,我使用这种方法将所有内容存储在用户下的 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 将配置存储在那里?我宁愿不重写整个配置逻辑。

4

0 回答 0