c# 桌面程序配置存储类

复制代码
public static class SettingHelper
{
    private static string getConfigPath()
    {
        var configFilePath = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
        var dir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), System.Windows.Forms.Application.ProductName);
        if(!Directory.Exists(dir))
            Directory.CreateDirectory(dir);
        var configPath = Path.Combine(dir, Path.GetFileName(configFilePath));
        if(!File.Exists(configPath))
            File.Copy(configFilePath, configPath);    
        return configPath;
    }

    public static void SaveSetting(string key, string value)
    {
        var configFileMap = new ExeConfigurationFileMap();
        configFileMap.ExeConfigFilename = getConfigPath();
        var config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
        var section = config.GetSection("appSettings") as AppSettingsSection;
        if (section.Settings[key] == null)
            section.Settings.Add(key, value ?? string.Empty);
        else
            section.Settings[key].Value = value ?? string.Empty;
        config.Save(ConfigurationSaveMode.Modified, true);
    }

    public static string GetSetting(string key, string defaultValue = "")
    {
        var configFileMap = new ExeConfigurationFileMap();
        configFileMap.ExeConfigFilename = getConfigPath();
        var config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
        var section = config.GetSection("appSettings") as AppSettingsSection;
        if (section.Settings[key] == null)
            return defaultValue;
        return section.Settings[key].Value;
    }
}
复制代码

 

posted on   空明流光  阅读(19)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2023-04-10 c++ stdcall 方式与 C# 传递 struct 数据类型?
2023-04-10 c++ 多线程摘记
2013-04-10 css 左右布局一例

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示