系统是windows7,这位朋友因为桌面没有OFFICE图标,又急着要用WORD,就把一个桌面图标右击,选择打开方式中选择了word,而且没有把"始终使用这种程序打开同类型文件"前的勾去掉。这一改之后,结果所有的快捷方式全变成了word文档了。可以再改成别的,比如再改为记事本方式打开,但就是没有办法恢复原状。
这是一个文件关联的问题。这样的问题在xp下根本就不可能发生,看来这个具体问题是Windows 7下的新问题。网上大致搜了一下,发现出现这样问题的决不只是这位朋友,看来有解决的必要。
为了解决这个问题,我们需要先谈一下文件关联的一些基本的知识,这样才能使朋友们做到知其然而知其所以然。
文件关联,主要的是把文件类型与开放式命令关联起来。而windows是通过文件的扩展名来识别文件类型的,这就首先需要把扩展名与文件类型关联起来。
第一、assoc命令
要修改扩展名与文件类型的关联,我们需要用到一个命令:assoc
点开始,搜索,输入cmd,打开cmd,在cmd中输入:assoc /?回车。我们可以得到关于这个命令的帮助。
assoc命令的作用有两个,一是显示扩展名与文件类型的关联,一是改写扩展名与文件类型的关联。让我们以快捷方式的关联为例来讲述这个问题。快捷方式的扩展名是。lnk,在windows下,这个扩展名一般是不会显现出来的,如果出现了,必是它的文件关联出问题了。我们在cmd中输入:assoc .lnk回车,我们可以得到的命令结果是:.lnk=lnkfile
这个命令结果显示了:扩展名。lnk与文件类型lnkfile是相关联的。凡是扩展名为。lnk的文件,都属于lnkfile这个文件类型。
现在让我们输入命令:
assoc .lnk=lnk
回车lnk这个扩展名与文件类型的关联就被改写了。然后我们再输入命令:
assoc .lnk
回车。我们得到的命令结果将是:
.lnk=lnk
这个结果显示了,扩展名。lnk已经是与文件类型lnk相关联,而不再是与lnkfile相关联。这个时候您去桌面上去看一下吧,您桌面上所有的快捷方式的后缀名。lnk全部显示出来了,所有的快捷方式都不再可用。双击时会提示:windows无法打开此文件。
现在再让我们输入:
assoc .lnk=lnkfile
回车。我们将会发现,一切又恢复了原状。
总之,如果是快捷方式的扩展名与文件类型之间的关联出现了问题,我们只需要输入:
assoc .lnk=lnkfile
回车后即可以解决问题。
这样,如果我们知道一种扩展名所属的正确的文件类型,当这种扩展名与文件类型之间的关联出现问题的时候,我们只需要输入:
assoc .ext=filetype
回车即可。
这个。ext代表的是文件扩展名,比如。lnk,这个filetype代表的是文件类型,比如lnkfile.如果我们不知道一种扩展名所关联的文件类型是什么,我们只需要在cmd中输入:assoc .ext回车。我们就能得到它所关联的文件类型是什么。每一个注册了的扩展名都会在注册表中存在着一个对应的注册表项:HKEY_CLASSES_ROOT.ext
这里的。ext代表的是扩展名,比如快捷方式对应的项就是:
HKEY_CLASSES_ROOT.lnk
这个项有一个默认的值,这个默认的值的数据,就是这个快捷方式所关联的文件类型。因而assoc命令,主要的就是修改这个项的默认值的数据。但需要注意的是,assoc命令所修改的内容,并不仅仅是这个项的默认值的数据,它还会要修改其它的一些方面。所以我们直接在注册表中改这个值的数据,并不能完全代替 assoc命令。
第二、 fytpe命令
我们现在知道了如何把扩展名与文件类型关联起来了,进一步地需要知道的是如何把文件类型与开放式命令关联起来。比如。txt扩展名所关联的文件类型是 txtfile,而txtfile正常的情形下,总是用notepad.exe(记事本)来打开的,这个notepad.exe就是打开txtfile文件类型的开放式命令。如何来修改这种文件类型与开放式命令之间的关联呢?这需要用到另外的一个重要的命令:ftype
让我们在cmd中输入:
ftype /?
回车。我们可以得到这个命令的帮助。
ftype命令有两个作用,一是显示文件类型与开放式命令之间的关联,一是改写文件类型与开放式命令之间的关联。
如果我们想知道一种文件类型与什么样的开放式命令相关联,我们只需要在cmd中输入:
ftype fileType
回车。我们就能够得到我们想要得到的结果。这个fileType代表的是指定的文件类型,比如lnkfile
让我们输入:ftype lnkfile
回车。正常情形下我们得到的命令结果是:没有找到文件类型"lnkfile"或者与其相关的开放式命令这个结果表明了,正常的情形下,lnkfile是没有与任何开放式命令相关联的。
让我们输入:ftype lnkfile=notepad.exe
回车。让我们再输入:
ftype lnkfile
回车,我们将得到的命令结果是:
lnkfile=notepad.exe
这个结果表明了:文件类型lnkfile就与开放式命令notepad.exe关联上了。
这种情形下,仍然并不会影响快捷方式的打开。那么,如何来清除这个关联,并且不与其它的开放式命令关联呢?我们只要输入:
ftype lnkfile=
回车即可。在xp下,这个命令无效,但是,我们可以在xp下输入:
ftype lnkfile=
回车。这个命令与前一个命令在外表上几乎看不出分别,分别就在于,前一个命令在=后面没有空格,而后一个命令在=后有一个空格。
让我们输入:
ftype txtfile
回车。正常情形下,我们可以得到的命令结果是:
txtfile="%SystemRoot%system32NOTEPAD.EXE" %1
这个结果表明了:文件类型txtfile与开放式命令txtfile="%SystemRoot%system32NOTEPAD.EXE" %1相关联。
如果一种文件类型与开放式命令之间的关联出现了问题,而我们知道正确的开放式命令是什么,这时我们只需要在cmd中输入如下命令并回车即可修复:
ftype fileType=openCommandString
这里fileType代表的是指定的文件类型,比如txtfile,这里openCommandString代表的是开放式命令,比如notepad.exe
如果我们的txtfile与开放式命令之间的关联出了问题,我们只需要在cmd中输入:
ftype txtfile="%SystemRoot%system32NOTEPAD.EXE" %1
回车。这样,我们也就修复了txtfile文件类型与它的开放式命令之间的关联。
所谓开放式命令,其实就是对这种文件类型的打开方式。
每一种注册了的文件类型,在注册表中都会存在着它的一个对应的注册表项,
这个注册表项就是:
HKEY_CLASSES_ROOTfiletype
这个filetype代表的是文件类型,比如batfile文件类型所对应的注册表项就是:
HKEY_CLASSES_ROOTbatfile
ftype命令所修改的注册表项主要就是—HKEY_CLASSES_ROOTfiletypeshell
opencommand—这个项的默认值的数据。
但需要注意的是,ftype命令所修改的并不仅仅是这个默认值的数据。因而直接在注册表中修改这个数据,并不能代替ftype命令的修改。
当然,ftype命令所修改的全部的东西都可以在注册表中找到,但是,我们那样一一地去找,远不如用ftype命令简单修改来得爽。
第三、右键打开方式