如何在“新建”菜单中添加新的文件类型

  昨天帮同事一个小忙的时候学到点东西,记在这里备忘,也顺便给刚好有需要的朋友一点帮助。
 
  我们公司产品会产生一种自定义格式的文件,同时会在系统中注册这种文件类型,并且将其与我们自己的程序进行关联。昨天同事为了测试方便想在系统右键菜单的“新建”里面添加我们自己的这种文件格式,问题就从这里出现。根据从网上找到的资料,同事顺利的在 Windows 2000 下添加了我们自己的文件类型(只是菜单显示有点怪),但是在 Windows XP 下确不行。
 
  具体的添加方法可以看这个 post:Mastering File Types in Windows XP > Customizing the New Menu(http://www.informit.com/articles/article.asp?p=415193&seqNum=5&rl=1),其实就是简单的修改一下注册表就可以,而且新建方式有好几种,显示了 Windows 系统有着不错的可定制性。
 
  反复 Google 后都没有找到过有人提到过这种方法在 XP 下失效的情况,也没有找到其它方法,于是越发觉得奇怪。突然想起来在 Windows 2000 下添加了菜单项以后菜单文字有点怪,然后又注意到新建菜单里面既有的一些文件类型,比如 .txt 文本文件,它的菜单文字是“文本文档”。经过在注册表里搜索这个字符串终于真相大白(就是大家看到小白以后说的那句话;-))。
 
  HKEY_CLASSES_ROOT 下面注册了很多文件类型,比如文本文件是 .txt,选中 .txt 这个键以后会发现这个键的默认值是 textfile,好的,再在 HKEY_CLASSES_ROOT 下面找到 textfile 这个键,选中 textfile 键后就会发现这个键的默认值是“文本文档”。问题就在这里!我们注册文件类型的代码估计有点小 bug,没有给后面这个键设置默认值,但这个默认恰恰就是系统用来命名新建菜单的。在 Windows 2000 下,OS 发现没有默认值时会自做主张的给我们一个内定值,所以菜单还是可以显示出来的。但是 Windows XP 显然在这方面比较严格,没有默认值就拒绝添加这个菜单项,所以这个方法就没有生效。
 
  好了,笔记做完了,也该睡觉了

Leave a Reply