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