打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#修改windows文件关联

C#修改windows文件关联

    上次我说过我用C#写了一个用来代替vista图片浏览器的小东东,闲来无事又小小更新了下,加入了文件关联的部分。
    众所周知,windows判断文件的类型是通过文件的扩展名的!其文件关联信息存储在注册表的HKEY_CLASSES_ROOT主键里面,分成两部分:1、文件扩展名相关的信息,比如文件类型(一个文件类型可能对应多个扩展名,比如jpegfile - .jpg, .jpeg, .jpe);2、文件类型相关的信息,比如图标,打开方式,编辑方式,打印机程序等等,所有文件类型相关的右键菜单在这里都能找到!那么,要修改一种文件的打开方式的话,先通过扩展名找到在系统注册的文件类型,然后修改此文件类型的打开方式。比如,.jpg的注册类型是jpegfile,而jpegfile下的子键——\shell\open\command的默认值就是默认的打开程序。
    那么修改注册表吧,使用Microsoft.Win32命名空间的Registy和RegistryKey两个类,Registry提供了很多静态方法和属性。RegistryKey提供一系列打开子键、获取值和设置值的方法。代码如下:

           // typeName should looks like ".png" which is a standard keyname in HKEY_CLASSES_ROOT

           private void setAssociatedFileType(string typeName, string app)

           {

              string fileType = getTypeKeyName(typeName);

              Registry.ClassesRoot.OpenSubKey(fileType + "\\shell\\open\\command", true).SetValue(null, app);

           }

           private string getAssociatedFileType(string typeName)

           {

              string fileType = getTypeKeyName(typeName);

              return (string)Registry.ClassesRoot.OpenSubKey(fileType + "\\shell\\open\\command").GetValue(null);

           }

           private string getTypeKeyName(string typeName)

           {

              RegistryKey key = Registry.ClassesRoot.OpenSubKey(typeName);

              return (string)key.GetValue(null);

           }


    其中的app是你希望作为默认打开方式的应用程序路径+ "1%",比如"notepad.exe 1%",1%可能需要使用引号括起来,否则不能正确处理包含空格的路径。另外注意,如果需要写入注册表值,一定要在OpenSubKey的参数表中加入允许写入的true(这里我郁闷了半天╭∩╮(︶∧︶)╭∩╮)。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java修改windows注册表设置 程序开机后自动运行
用Visual C#打造个性化的IE浏览器
C#设置开机启动
c# 读取regedit
C#操作注册表实现文件关联
C#操作注册表全攻略
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服