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

u012474808 2013-10-17 10:18:57
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目录:

有大神指导一下!
...全文
912 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
u012474808 2013-10-17
  • 打赏
  • 举报
回复
引用 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目录!

我是需要写到后台代码中的!
xisat 2013-10-17
  • 打赏
  • 举报
回复
方法一:
注册表 .mp4 项是用来存放关联类型和openwith的 你在这里加open\command没有用
正确的做法是取.mp4项的默认值,然后在root根目录下找到这个类型,去修改他的open\command
或者你修改.mp4项的默认值,然后自己在root根目录下建立一个同名项,加上自己的open\command
方法二:
assoc ftype 命令,
比如assoc .mp4
ftype mp4files="my application" %1这个不多说了,网上可以搜索一下
feiyun0112 2013-10-17
  • 打赏
  • 举报
回复
用regsnap比较一下手工修改默认打开方式前后的注册表变化

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
xisat 2013-10-17
  • 打赏
  • 举报
回复
引用 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这个不多说了,网上可以搜索一下
--------------------------------------------------------------------------------- 你提供的两个方法还是没用 请有正确方法再回帖![/quote] 你这么说话没人敢回复你的帖子了。 mp4file不是每台电脑都有的,这个只是一个关联类别,个人的系统会有不一样,你在注册表里面点.mp4项,然后看它右边窗口的默认值,默认值就是你的系统中和.mp4文件关联的类别,然后在找到root项下面的对应默认值名称,在这里修改open\command 这个类别要看你装的播放器而定,名称不一,你也可以自己定义这个关联类别。 assoc ftype命令的相关说明有很多,你网上搜索下这两个命令并不难,怎么感觉我在懵你一样,后面的事情请自便了,我不会再回复。
u012474808 2013-10-17
  • 打赏
  • 举报
回复
引用 2 楼 xisat 的回复:
方法一: 注册表 .mp4 项是用来存放关联类型和openwith的 你在这里加open\command没有用 正确的做法是取.mp4项的默认值,然后在root根目录下找到这个类型,去修改他的open\command 或者你修改.mp4项的默认值,然后自己在root根目录下建立一个同名项,加上自己的open\command 方法二: assoc ftype 命令, 比如assoc .mp4 ftype mp4files="my application" %1这个不多说了,网上可以搜索一下
--------------------------------------------------------------------------------- 你提供的两个方法还是没用 请有正确方法再回帖!

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧