首页 > 编程语言 >c# 桌面程序配置存储类

c# 桌面程序配置存储类

时间:2024-04-10 12:46:08浏览次数:17  
标签:存储 桌面 string c# section key configFileMap var config

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;
    }
}

 

标签:存储,桌面,string,c#,section,key,configFileMap,var,config
From: https://www.cnblogs.com/nanfei/p/18125777

相关文章

  • COP4600 文件系统实现细节
    P3:文件系统概述你在蜥蜴军团的掩护被揭穿了,你被揭露为双重间谍并被驱逐出去!是的都很“詹姆斯·邦德”,如果你自己这么说的话,那是多么大胆的地下直升机逃生……但是你感到很幸运能带着你的皮肤逃脱。(从字面上看……他们会用你做一套“人体服”!)现在你又回到了“外部”,你的任务是创建......
  • C++类拷贝控制 深拷贝 浅拷贝
    参考博文:https://www.cnblogs.com/zhxmdefj/p/11579364拷贝构造函数,拷贝赋值运算符拷贝构造函数第一个参数是自身类类型引用,其他参数都有默认值的构造函数就是拷贝构造函数。classSales_data{public:   Sales_data();  //默认构造函数   Sales_data(const......
  • 5、Hackademic-RTB1(VulnHub)
    Hackademic-RTB1一、nmap扫全端口会爆炸,暂时使用默认先扫描出两个二、web渗透随便看看简单目录爆破/Hackademic_RTB1/根据界面提示,我们可以来到这个目录源码处发现框架再次目录爆破wscan扫描WordPress1.5.1searchsploit/wp-content/plugins/在目录爆破......
  • GD32F470_GP2Y0A02YK0F 红外激光测距传感器 避障测距20-150cm模块移植
    2.4红外测距传感器GP2Y0A02YKOF是夏普的一款距离测量传感器模块。它由PSD(positionsensitivedetector)和IRED(infraredemittingdiode)以及信号处理电路三部分组成。由于采用了三角测量方法,被测物体的材质、环境温度以及测量时间都不会影响传感器的测量精度。传感器输......
  • ChatGPT周岁记:亲手写下成绩单,它给自己打了这样的分数
    2022年11月30日,这一天或许会被镌刻进人类历史的转折点——源自美国的人工智能研发翘楚OpenAI推出了对话式AIChatGPT,该事件不仅在全球AI业界掀起了新一轮高潮,更为罕见地被比肩为继“蒸汽机时代”、“智能手机时代”甚至“火的发现”之后的重大里程碑。此年间,被冠以“生成式人......
  • Centos7.9 VROC配置过程
    最近入H3CR6900G5安装,要用于oracle11g,只能centos7版本,而7.9也是intelvroc(621A芯片)在7版本可用.如果用7.4,安装驱动的时候就提醒kernel哪里不支持.但翻查国外国内的文档,就算是centos7.9也没有很详细的对基于NVME的VROC操作进行步骤的说明,踩坑一周后,最终完成(略有瑕疵)......
  • Python计算两个质谱谱图的相似度——Matchms
    在做实验的时候需要在python环境下比较两个谱图的相似度,对于这个需求就遇到两个问题:如何导入谱图,让其在python环境中显示如何对比相似度,谱图之间的相似度与向量之间的相似度有何差别我调研了一些库可以用在python中去处理谱图,包括pyteomics、spectrum_utils还有今天要介绍的......
  • 【机器学习】Logistic与Softmax回归详解
    在深入探讨机器学习的核心概念之前,我们首先需要理解机器学习在当今世界的作用。机器学习,作为人工智能的一个重要分支,已经渗透到我们生活的方方面面,从智能推荐系统到自动驾驶汽车,再到医学影像的分析。它能够从大量数据中学习模式和规律,然后使用这些学习到的信息来做出预测或决......
  • Qt - Qt Creator下载与安装
    一、QtCreator简介Qt是一个跨平台应用开发框架。QtCreator是一个跨平台的集成开发环境(IDE),集成了Qt所提供的功能,可以单独下载使用,也可以结合Qt组合使用。二、QtCreator下载下载地址:https://download.qt.io/archive/(1)进入下载界面后,选择下qt文件夹,或者qtcreator文件夹。(2......
  • C#中常用I/O流介绍、 FileStream类及FileMode、FileAccess、FileShare
    原文链接:https://zhuanlan.zhihu.com/p/558000060?utm_id=01、流的含义:流可以视为一组连续的一维数据,包含开头和结尾,并且其中的游标指示了流的当前位置。抽象基类Stream支持读取和写入字节。2、流涉及三个基本操作:读取:将数据从流传输到数据结构(如字节数组)中。写入:将数据从......