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