当前位置: 首页 > article >正文

C#通过注册表实现记住上次打开路径

直接上代码,代码参考自网络,进行了一些修改和封装,可以直接使用。

       private bool dirPathSaveToRegistry(string path)
        {
            try
            {
                Microsoft.Win32.RegistryKey software = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE", true);   //打开注册表中的software       
                Microsoft.Win32.RegistryKey ReadKey = software.OpenSubKey("FolderPath", true);                              //打开自定义的文件目录项
                if (ReadKey == null)
                {
                    ReadKey = software.CreateSubKey("FolderPath");      //不存在则新建
                    ReadKey?.SetValue("OpenFolderDir", path);           //写入文件目录
                    ReadKey?.Close();
                    Microsoft.Win32.Registry.CurrentUser.Close();
                }
                else
                {
                    ReadKey.SetValue("OpenFolderDir", path);
                    ReadKey.Close();
                    Microsoft.Win32.Registry.CurrentUser.Close();
                }
            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }

        private string getDirPathFromRegistry()
        {
            try
            {
                Microsoft.Win32.RegistryKey software = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE", true);
                Microsoft.Win32.RegistryKey ReadKey = software.OpenSubKey("FolderPath", true);

                string path = ReadKey?.GetValue("OpenFolderDir")?.ToString();
                return path;
            }
            catch (Exception)
            {
                //TO DO
            }

            return null;
        }

使用方法参考:

            string sRegDir = getDirPathFromRegistry();
            string strPath = sRegDir;
            if (sRegDir == null || sRegDir.Length == 0)
            {
                strPath = System.IO.Directory.GetCurrentDirectory();
            }

在成功打开的位置保存目录:

                    //将目录保存到注册表
                    FileInfo fi = new FileInfo(filePath);
                    dirPathSaveToRegistry(fi.Directory.ToString());

 

记住路径还可以采用配置文件的方法,因为某些情况下用户可能不希望软件对注册表进行操作。

在C#中,你可以使用配置文件或数据库来记住上次打开的路径。以下是一个简单的示例,使用配置文件来记住上次的路径:

首先,添加一个配置文件(如果你的应用程序是Windows Forms应用程序,可以使用app.config;如果是其他类型的应用程序,可以使用其他方式,如JSON文件或者INI文件)。

<!-- app.config -->
<configuration>
  <appSettings>
    <add key="LastOpenPath" value="默认路径"/>
  </appSettings>
</configuration>

然后,在C#代码中读取和更新这个配置:

using System.Configuration;
 
// 读取上次保存的路径
string lastOpenPath = ConfigurationManager.AppSettings["LastOpenPath"];
 
// 更新路径
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["LastOpenPath"].Value = "新路径";
config.Save(ConfigurationSaveMode.Modified);
 
// 强制重新加载配置
ConfigurationManager.RefreshSection("appSettings");

在你的应用程序启动时,读取这个配置项,在用户选择了一个新路径后,更新这个配置项。这样,下次应用程序启动时,就会记住上次的路径。


http://www.kler.cn/news/309668.html

相关文章:

  • 超级简约的B端页面,B端系统就该如此简化设计。
  • JS基础:数组for循环年龄案例
  • sql中的APPLY 和 LATERAL
  • Git 命令详解与项目迁移指南
  • 代码随想录算法训练营第13天|二叉树基础知识、递归遍历、迭代遍历、层序遍历、116. 填充每个节点的下一个右侧节点指针
  • 【计算机网络】TCP的可靠传输机制、标记位以及编程结构
  • vue3透传、注入
  • sqlite在Windows环境下安装、使用、node.js连接
  • URLEncode
  • 力扣之181.超过经理收入的员工
  • 基于C#+SQLServer 2005实现(CS界面)校园卡消费信息系统
  • Redis 篇- 实战项目中使用 Redis 实现经典功能(异步秒杀商品、点赞功能、共同关注的好友、投喂功能)
  • 笔试强训day15
  • Oracle SQL injection(SQL注入)
  • XML映射器-动态sql
  • 51单片机-直流电机(PWM:脉冲宽度调制)实验-会呼吸的灯直流电机调速
  • 通过WinCC在ARMxy边缘计算网关上实现智能制造
  • “杏鲍菇驱动机器人创新前行:康奈尔大学最新研究亮相Science子刊“
  • uniapp 苹果安全域适配
  • 2024.9.14
  • python怎么写csv文件
  • 特效【生日视频制作】小车汽车黄金色版悍马车身AE模板修改文字软件生成器教程特效素材【AE模板】
  • Python | Leetcode Python题解之第406题根据身高重建队列
  • 三维数字图像相关法(3D-DIC)用于复合材料力学性能测试
  • 量化交易backtrader实践(一)_数据获取篇(3)_爬取数据
  • 直播开播极速流,如何有效接入?
  • RK3588人工智能学习笔记-rknn_server代理服务使用介绍
  • 清理C盘缓存,如何针对Windows10系统,专业地调整和优化C盘缓存设置
  • ESP-01S,ESP8266设置客户端透传模式
  • Nginx节点健康检查与自动上下线管理脚本,推送告警到企业微信