实现双击文件调用系统已安装的程序打开此文件 并设置文件的图标
/// <summary>
/// 注册表操作类
/// </summary>
public static class RegistryKeyOperator
{
public const string Extension = ".space";
/// <summary>
/// 创建文件关联注册表 已存在则跳过
/// </summary>
public static void CreatFileLinkRegistry()
{
if (MatchRegistryKey()) return;
try
{
//文件注册
var registryKey = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(Extension);
//设置默认图标
var iconKey = registryKey?.CreateSubKey("DefaultIcon");
if (iconKey == null) return;
iconKey.SetValue("", Application.StartupPath + "\\Image.ico");
//设置默认打开程序路径
var comRegistryKey = registryKey.CreateSubKey("shell\\open\\command");
if (comRegistryKey == null) return;
comRegistryKey.SetValue("", Application.ExecutablePath + " %1");
//关闭
registryKey.Close();
}
catch
{
MessageBox.ShowError("请以管理员身份运行此程序!");
}
}
private static bool MatchRegistryKey()
{
//获取信息
var registryKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(Extension);
if (registryKey?.OpenSubKey("shell")?.OpenSubKey("open")?.OpenSubKey("command") == null) return false;
var comRegistryKey = registryKey.OpenSubKey("shell")?.OpenSubKey("open")?.OpenSubKey("command");
var varValue = comRegistryKey?.GetValue("");
if (Equals(varValue, Application.ExecutablePath + " %1"))
{
return true;
}
Microsoft.Win32.Registry.ClassesRoot.DeleteSubKeyTree(Extension, false);
return false;
}
}
flyliusheng
浙公网安备 33010602011771号