C# 双击文件 打开程序

using Microsoft.Win32;
using System.Configuration;
using System.Data;
using System.Reflection;
using System.Windows;

namespace ProgramOpen
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        public App()
        {
            RegistSubKey();
        }

        private void RegistSubKey()
        {
            /// 是否通过关联打开的软件 
            //if (args.Length > 0)
            //{
            //    string path = "";
            //    for (int i = 0; i < args.Length; i++)
            //        path += args[i] + " ";
            //    path = path.TrimEnd(' ');
            //    Console.WriteLine(path);
            //    Console.ReadKey();
            //    //Application.Run(new mainForm(path)); 
            //}
            //else
            //{
            string keyName;
            string keyValue;
            keyName = "WPCFile";
            keyValue = "资源包文件";
            RegistryKey isExCommand = null;
            bool isCreateRegistry = true;

            string exePath = AppDomain.CurrentDomain.BaseDirectory + "/ProgramOpen.exe";

            try
            {
                /// 检查 文件关联是否创建 
                isExCommand = Registry.ClassesRoot.OpenSubKey(keyName);
                if (isExCommand == null)
                {
                    isCreateRegistry = true;
                }
                else
                {
                    if (isExCommand.GetValue("Create").ToString() == exePath)
                    {
                        isCreateRegistry = false;
                    }
                    else
                    {
                        Registry.ClassesRoot.DeleteSubKeyTree(keyName);
                        isCreateRegistry = true;
                    }

                }
            }
            catch (Exception)
            {
                isCreateRegistry = true;
            }

            /// 假如 文件关联 还没有创建,或是关联位置已被改变 
            //if (isCreateRegistry) 
            {
                try
                {
                    RegistryKey key, keyico;
                    key = Registry.ClassesRoot.CreateSubKey(keyName);
                    key.SetValue("Create", exePath);

                    keyico = key.CreateSubKey("DefaultIcon");
                    keyico.SetValue("", exePath + ",0");

                    key.SetValue("", keyValue);
                    key = key.CreateSubKey("Shell");
                    key = key.CreateSubKey("Open");
                    key = key.CreateSubKey("Command");

                    /// 关联的位置 
                    key.SetValue("", exePath + @" %1/");

                    /// 关联的文件扩展名,  
                    keyName = ".wpc";
                    keyValue = "WPCFile";
                    key = Registry.ClassesRoot.CreateSubKey(keyName);
                    key.SetValue("", keyValue);
                }
                catch (Exception)
                {
                }
            }
            //Application.Run(new mainForm("")); 
            //}
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值