当前位置:编程学习 > C#/ASP.NET >>

C# Win7环境下,修改注册表更改.MP4文件的默认打开方式(覆盖系统右击打开方式,在root中增加.mp4/shell····的不用说了)

C# 更改.MP4文件的默认打开方式(覆盖系统右击打开方式,在root中增加.mp4/shell····的不用说了)
      最近在做一个播放器项目,用C#做播放器,遇到一个问题。播放器通常都会有关联媒体文件,查了很多资料和网上资源,千篇一律:在root下新增.mp4/shell/command····等等,这个方法对于自定义后缀文件是有用的,如果是系统自带的.mp4什么的没有用,root目录下也没有MP4file目录,有没有大神能指导一下!
总结了千篇一律的代码:
 
try
            {
                string notepath = @"D:\C#\TalentPlay\TalentPlay\bin\Release\TalentPlay.exe";//记事本应用程序路径
                string extName = ".mp4";//要创建子项的名称
                string mtype = "我定义的类型";
                string mContent = "text/plain";
                RegistryKey mreg;
                RegistryKey mreg2;
                mreg = Registry.ClassesRoot;//获取指定基项
                mreg = mreg.CreateSubKey(extName);//在指定基项下创建新子项“.mp4”
                mreg.SetValue("", mtype);//设置.ls子项的“默认键”对应的值为“我定义的类型”
                mreg.SetValue("Content Type", mContent);//设置设置.mp4子项的“Content Type键”对应的值为“text/plain”


                mreg2 = mreg.CreateSubKey("DefaultIcon");//在.mp4子项下创建新的子项“DefaultIcon”
                mreg2.SetValue("", @"C:\Users\Administrator\Desktop\5332\5332\documentsfolder.ico");//设置“shell\\open\\command”子项的“默认键”对应的值为“C:\WINDOWS\notepad.exe %1”


                mreg = mreg.CreateSubKey("shell\\open\\command");//在.mp4子项下创建新的子项“shell\\open\\command”
                mreg.SetValue("", notepath + " %1");//设置“shell\\open\\command”子项的“默认键”对应的值为“C:\WINDOWS\notepad.exe %1”
                mreg2.Close();
                mreg.Close();//关闭该项,如果该项的内容已修改,则将该项刷新到磁盘。
                if (MessageBox.Show("设置完毕") == DialogResult.OK)
                {
                    RefreshSystem();//刷新explorer进程
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

结果还是MediaPlay:


注册表.mp4目录:

有大神指导一下!
win7 注册表 默认打开方式 C# --------------------编程问答-------------------- 用regsnap比较一下手工修改默认打开方式前后的注册表变化
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- 方法一:
注册表  .mp4 项是用来存放关联类型和openwith的 你在这里加open\command没有用
正确的做法是取.mp4项的默认值,然后在root根目录下找到这个类型,去修改他的open\command
或者你修改.mp4项的默认值,然后自己在root根目录下建立一个同名项,加上自己的open\command
方法二:
assoc  ftype 命令,
比如assoc .mp4  
ftype mp4files="my application" %1这个不多说了,网上可以搜索一下 --------------------编程问答--------------------
引用 2 楼 xisat 的回复:
方法一:
注册表  .mp4 项是用来存放关联类型和openwith的 你在这里加open\command没有用
正确的做法是取.mp4项的默认值,然后在root根目录下找到这个类型,去修改他的open\command
或者你修改.mp4项的默认值,然后自己在root根目录下建立一个同名项,加上自己的open\command
方法二:
assoc  ftype 命令,
比如assoc .mp4  
ftype mp4files="my application" %1这个不多说了,网上可以搜索一下

--------------------------------------------------------------------------------------
2楼,你说找.mp4的目录默认值,root下面.mp4的默认目录是哪个?别说网上搜下就能搜到,搜不到!mp4file 
都没,m4a有,但是目录下没有open/command目录!

我是需要写到后台代码中的!  --------------------编程问答--------------------
引用 2 楼 xisat 的回复:
方法一:
注册表  .mp4 项是用来存放关联类型和openwith的 你在这里加open\command没有用
正确的做法是取.mp4项的默认值,然后在root根目录下找到这个类型,去修改他的open\command
或者你修改.mp4项的默认值,然后自己在root根目录下建立一个同名项,加上自己的open\command
方法二:
assoc  ftype 命令,
比如assoc .mp4  
ftype mp4files="my application" %1这个不多说了,网上可以搜索一下

---------------------------------------------------------------------------------
你提供的两个方法还是没用 请有正确方法再回帖! --------------------编程问答--------------------
引用 4 楼 u012474808 的回复:
Quote: 引用 2 楼 xisat 的回复:

方法一:
注册表  .mp4 项是用来存放关联类型和openwith的 你在这里加open\command没有用
正确的做法是取.mp4项的默认值,然后在root根目录下找到这个类型,去修改他的open\command
或者你修改.mp4项的默认值,然后自己在root根目录下建立一个同名项,加上自己的open\command
方法二:
assoc  ftype 命令,
比如assoc .mp4  
ftype mp4files="my application" %1这个不多说了,网上可以搜索一下

---------------------------------------------------------------------------------
你提供的两个方法还是没用 请有正确方法再回帖!




你这么说话没人敢回复你的帖子了。

mp4file不是每台电脑都有的,这个只是一个关联类别,个人的系统会有不一样,你在注册表里面点.mp4项,然后看它右边窗口的默认值,默认值就是你的系统中和.mp4文件关联的类别,然后在找到root项下面的对应默认值名称,在这里修改open\command  这个类别要看你装的播放器而定,名称不一,你也可以自己定义这个关联类别。

assoc  ftype命令的相关说明有很多,你网上搜索下这两个命令并不难,怎么感觉我在懵你一样,后面的事情请自便了,我不会再回复。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,