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

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

cs 复制代码
       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;
        }

使用方法参考:

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

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

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

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

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

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

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

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

cs 复制代码
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");

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

相关推荐
葡萄城技术团队12 小时前
所有网站通用:6 行 HTML 代码搞定页面加载提速
html
mudtools12 小时前
.NET驾驭Word之力:玩转文本与格式
c#·.net
糖糖TANG13 小时前
从零开始制作我的第一个静态网页——教师节主题首页开发记录
html
唐青枫16 小时前
C#.NET 数据库开发提速秘籍:SqlSugar 实战详解
c#·.net
前端老鹰1 天前
HTML <output> 标签:原生表单结果展示容器,自动关联输入值
前端·html
mudtools1 天前
.NET驾驭Word之力:理解Word对象模型核心 (Application, Document, Range)
c#·.net
芦苇Z1 天前
HTML <a> 标签的 rel 属性全解析:安全、隐私与 SEO 最佳实践
前端·html
Alice-YUE2 天前
【CSS学习笔记3】css特性
前端·css·笔记·html
大飞pkz2 天前
【设计模式】C#反射实现抽象工厂模式
设计模式·c#·抽象工厂模式·c#反射·c#反射实现抽象工厂模式
唐青枫2 天前
从入门到进阶:C#.NET Stopwatch 计时与性能测量全攻略
c#·.net