需求:编一个程序,在双击某个指定格式文件时,自动打开程序并获得文件的路径,怎么做?

解决方案 »

  1.   

    先写注册表创建关联    /// <summary> 
            /// 设置文件关联 在程序中获得参数关联参数 
            /// </summary> 
            /// <param name="p_Filename">程序的名称</param> 
            /// <param name="p_FileTypeName">扩展名 .VRD </param> 
            public static void RelatingFileAdd(string p_Filename, string p_FileTypeName)
            {
                RegistryKey _RegKey = Registry.ClassesRoot.OpenSubKey("", true);              //打开注册表             RegistryKey _VRPkey = _RegKey.OpenSubKey(p_FileTypeName);
                if (_VRPkey != null) _RegKey.DeleteSubKey(p_FileTypeName, true);
                _RegKey.CreateSubKey(p_FileTypeName);
                _VRPkey = _RegKey.OpenSubKey(p_FileTypeName, true);
                _VRPkey.SetValue("", "Exec");            _VRPkey = _RegKey.OpenSubKey("Exec", true);
                if (_VRPkey != null) _RegKey.DeleteSubKeyTree("Exec");         //如果等于空 就删除注册表DSKJIVR             _RegKey.CreateSubKey("Exec");
                _VRPkey = _RegKey.OpenSubKey("Exec", true);
                _VRPkey.CreateSubKey("shell");
                _VRPkey = _VRPkey.OpenSubKey("shell", true);                      //写入必须路径 
                _VRPkey.CreateSubKey("open");
                _VRPkey = _VRPkey.OpenSubKey("open", true);
                _VRPkey.CreateSubKey("command");
                _VRPkey = _VRPkey.OpenSubKey("command", true);
                string _PathString = "\"" + p_Filename + "\" \"%1\"";
                _VRPkey.SetValue("", _PathString);                                    //写入数据 
            }
            /// <summary> 
            /// 删除文件关联 
            /// </summary> 
            /// <param name="p_FileTypeName">扩展名 .VRD </param> 
            public static void RelatingFileDel(string p_FileTypeName)
            {
                RegistryKey _Regkey = Registry.ClassesRoot.OpenSubKey("", true);            RegistryKey _VRPkey = _Regkey.OpenSubKey(p_FileTypeName);
                if (_VRPkey != null) _Regkey.DeleteSubKey(p_FileTypeName, true);
                if (_VRPkey != null) _Regkey.DeleteSubKeyTree("Exec");        }
    使用的时候  RelatingFileAdd("你程序的路径和程序名",".扩展名");
    程序里使用   Environment.CommandLine  获取文件名就可以了