C0EEBDA1

在梦中,我是有超能力的。。。

« 点阵字库生成工具LRC歌词读取和排序算法 »

【MFC应用】文件关联

之前写过一次有关文件关联的帖子了,只是可恨的WLW竟然半道出问题,害的我辛辛苦苦写的东西就这样一转眼就没了,唉~

重新来吧 :-)

 

在Windows下,文件关联的操作主要是通过注册表来实现的。注册表在Windows里被应用到极致,几乎所有的系统相关的东西在注册表里都可以找到身影~

今天,就来简单看一下如何利用注册表来达到文件关联的目的。

打开注册表编辑器(开始-->运行-->regedit),并展开HKEY_CLASSES_ROOT,可以看到下面的景象:

image

windows系统下所有文件类型都会在这里进行注册,HKEY_CLASSES_ROOT分支,也就成了所有文件的集合地。在HKEY_CLASSES_ROOT下,可以看到许多以“.xxx”命名的分支,这些分支就代表了一系列的扩展名。比如,我们找一个.txt扩展名:

image

可以看到,.txt类型的文件,在注册表中对应了HKEY_CLASSES_ROOT下的名为“.txt”的分支。那么,这个类型的文件的关联程序是在哪里呢?或许,你在.txt分支下挖地三尺也没看到有关联程序的身影,那它到底是怎么找到.txt文件的管理程序呢?

看这里:

image

.txt分支的值,是字符串类型的,这里,在我的电脑上,这个字符串是叫做“UltraEdit.txt”。事实上,windows在找到.txt分支之后,就会查找这个值,并根据这个值所定义的程序的“名称”来查找它的关联程序到底是什么。

拿到.txt的值之后,我们可以接着在HKEY_CLASSES_ROOT分支里向下找,找跟这个值同名的分支:

image

在UltraEdit.txt分支下,可以看到shell\open\command的分支结构,command分支,就代表了名为“UltraEdit.txt”的应用程序的真正路径。看上图的右边,command的值即是UltraEdit这个工具的可执行文件的路径。

 

至此,大致上可以看出windows下实现文件关联的原理。如果希望为一个系统原来没有的文件类型注册一个关联程序,那么,正确的方法是:

 

 

(当然是在文件夹选项里新建,呵呵 ^o^  这是最快速的方法)

 

不过,因为我们这里讨论的方法将来需要应用MFC来实现,所以,还是要看比较繁琐的实现步骤(为.xxx类型的文件建立指向程序xxxxxxxx的关联):

 

1、在HKEY_CLASSES_ROOT下建立.xxx分支;

2、设定.xxx分支的值为xxxx(这个名称自已定,不过,不要与现有的重复,一般可以选择能够代表文件类型或关联程序的名字)

3、在HKEY_CLASSES_ROOT下建立xxxx分支(名称与.xxx分支的值相同)

4、在xxxx分支下依次创建分支,完成这样的结构:\HKEY_CLASSES_ROOT\xxxx\shell\open\command

5、修改command分支的值,以需要关联的程序的完整路径作为它的值

 

OK~

在Windows下实现文件关联就介绍这么多了~有关利用MFC实现的方法,见我另外的一个文章。

  • 相关文章:
  • quote 1.mmss
  • “在Windows下实现文件关联就介绍这么多了~有关利用MFC实现的方法,见我另外的一个文章。”

    ??另外的文章在哪?
    lijian 于 2009-5-25 10:22:05 回复
    呵呵,不好意思,当初写的时候本来是要写两篇的,结果后来一篇给忘记了,汗颜。。。
  • 2009-5-23 15:58:10 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense  theme by BokeZhuti

Copyright 2008-2009 C0EEBDA1. Some Rights Reserved. 备案号:京ICP备09020681号