以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  C#操作注册表建立文件关联  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=125329)


--  作者:卷积内核
--  发布时间:7/24/2012 10:12:00 AM

--  C#操作注册表建立文件关联

提供两个方法 建立个是删除文件关联

使用方式

ViewScreen.ViewControl.ViewDraw.SaveReg(@"C:\IVRDesigner.exe", ".vrd");

在程序中获得参数关联参数  Environment.CommandLine

方法  需要引用using Microsoft.Win32;

/// <summary>
        /// 设置文件关联
        /// </summary>
        /// <param name="p_Filename">程序的名称</param>
        /// <param name="p_FileTypeName">扩展名 .VRD </param>
        public static void SaveReg(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 DelReg(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");

        }



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
39.063ms