C# 为所有用户存储设置的正确位置

C# 为所有用户存储设置的正确位置,c#,configurationmanager,C#,Configurationmanager,我正在开发的软件需要为用户存储一些全局设置。 目前,我正在使用以下方法将所有内容存储在用户下的appdata中: public virtual void Load() { try { lock (ConfigLock) { if (Config != null) Config.Save(ConfigurationSaveMode.Full); Config = Con

我正在开发的软件需要为用户存储一些全局设置。 目前,我正在使用以下方法将所有内容存储在用户下的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);
    }
}
剩下的只是从配置中读取数据的函数

以前,应用程序存储在自定义文件夹下,但现在需求发生了变化,我们需要将其放在程序文件下。使用自定义文件夹时,存储全局设置与执行以下两项更改一样简单,因为应用程序对该文件夹具有写访问权限:

Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

但是,在程序文件中,您需要是管理员才能在其中写入。那么,如何存储全局应用程序数据?或者更确切地说,这方面的最佳做法是什么


此外,我知道程序数据,如果那是正确的位置,我如何使用ConfigurationManager将配置存储在那里?我不想重写整个配置逻辑。

为什么不将标准设置模型与应用程序范围元素一起使用?@Grant,原因如下。使用了大量的代码和复杂的配置,将其更改为标准设置模型将花费太多时间,并可能导致新的bug。
section.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineOnly;