C#设置自定义文件图标实现双击启动(修改注册表)

作者:daisy 时间:2023-08-21 08:43:46 

程序生成的自定义文件,比如后缀是.test

这种文件怎么直接启动打开程序,并打开本文件呢

     1、双击打开

     2、自定义的文件,有图标显示

     3、自定义的文件,点击右键有相应的属性

后台代码:(如何在注册表中修改信息)


 //工具启动路径
 string toolPath = System.Windows.Forms.Application.StartupPath + "\\邮件小工具.exe";

string extension = SptdConst.FileExtension;

string fileType = "Email File";

string fileContent = "text/plain";
 //获取信息
 Microsoft.Win32.RegistryKey registryKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(extension);

if (registryKey != null && registryKey.OpenSubKey("shell") != null && registryKey.OpenSubKey("shell").OpenSubKey("open") != null &&
   registryKey.OpenSubKey("shell").OpenSubKey("open").OpenSubKey("command") != null)
 {
   var varSub = registryKey.OpenSubKey("shell").OpenSubKey("open").OpenSubKey("command");
   var varValue = varSub.GetValue("");

if (Object.Equals(varValue, toolPath + " %1"))
   {
     return;
   }
 }
 //删除
 Microsoft.Win32.Registry.ClassesRoot.DeleteSubKeyTree(extension, false);
 //文件注册
 registryKey = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(extension);
 registryKey.SetValue("文件类型", fileType);
 registryKey.SetValue("Content Type", fileContent);
 //设置默认图标
 Microsoft.Win32.RegistryKey iconKey = registryKey.CreateSubKey("DefaultIcon");
 iconKey.SetValue("", System.Windows.Forms.Application.StartupPath + "\\logo.ico");
 //设置默认打开程序路径
 registryKey = registryKey.CreateSubKey("shell\\open\\command");
 registryKey.SetValue("", toolPath + " %1");
 //关闭
 registryKey.Close();

在修改了注册表信息后,双击文件是启动了软件,之后怎么在代码中操作?


//双击启动打开
//如果原有路径中存在空格,则会分解成多个元素
if (e.Args.Length > 0)
{
  string filePath = String.Join(" ", e.Args.ToArray());
  FileInfo file = new FileInfo(filePath);
  if (file.Exists)
   {
     EmailToolConst.DoubleClickSptdFilePath = file.FullName;
   }
}

然后可以在主程序loaded方法中,判断DoubleClickSptdFilePath 是否有值,如果有,则获取路径下的文件,继续操作。

标签:c,修改,注册表
0
投稿

猜你喜欢

  • SpringBoot整合Mybatis与druid实现流程详解

    2022-09-17 17:05:31
  • Idea中SpringBoot多模块项目的建立实现

    2023-11-08 07:52:34
  • 基于OpenCv与JVM实现加载保存图像功能(JAVA 图像处理)

    2021-12-27 23:09:33
  • 在 Ubuntu Linux 上安装 Oracle Java 14的方法

    2022-01-01 15:13:52
  • springboot web项目打jar或者war包并运行的实现

    2022-11-20 03:01:59
  • Android开发实现横向列表GridView横向滚动的方法【附源码下载】

    2021-07-13 17:27:26
  • JDK8 中Arrays.sort() 排序方法详解

    2023-01-17 10:38:30
  • java编写贪吃蛇小游戏

    2023-06-19 01:49:54
  • 一文详解Java线程的6种状态与生命周期

    2022-02-08 08:44:30
  • android studio与手机连接调试步骤详解

    2023-06-09 09:54:26
  • javafx实现五子棋游戏

    2022-02-01 07:00:01
  • Java中过滤器 (Filter) 和 拦截器 (Interceptor)的使用

    2023-07-07 00:20:28
  • C#隐式运行CMD命令(隐藏命令窗口)

    2023-05-03 17:41:32
  • C#使用Json.Net进行序列化和反序列化及定制化

    2023-07-10 19:11:35
  • MVC设定默认路由为指定的Area下的某个action

    2023-03-03 00:00:56
  • java 发送邮件的实例代码(可移植)

    2022-09-23 15:53:44
  • IDEA2020.1常用配置说明

    2023-01-09 02:11:50
  • Java事件处理步骤讲解

    2023-10-14 11:49:57
  • 关于Spring Cloud 本地属性覆盖的问题

    2021-09-17 09:26:42
  • IDEA MyBatis Plugins自动生成实体类和mapper.xml

    2021-07-24 01:26:37
  • asp之家 软件编程 m.aspxhome.com