转载序 http://hi.baidu.com/endlesslove137/item/9754f4a9e8c3c39a151073e5 原地址
按:本文也适合vista
话题的提起:
百度遇到一位朋友紧急求助:系统是windows7,这位朋友因为桌面没有OFFICE图标,又急着要用WORD,就把一个桌面图标右击,选择打开方式中选择了word,而且没有把“始终使用这种程序打开同类型文件”前的勾去掉。这一改之后,结果所有的快捷方式全变成了word文档了。可以再改成别的,比如再改为记事本方式打开,但就是没有办法恢复原状。
这是一个文件关联的问题。这样的问题在xp下根本就不可能发生,看来这个具体问题是win7下的新问题。网上大致搜了一下,发现出现这样问题的决不只是这位朋友,看来有解决的必要。
为了解决这个问题,我们需要先谈一下文件关联的一些基本的知识,这样才能使朋友们做到知其然而知其所以然。
文件关联,主要的是把文件类型与开放式命令关联起来。而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%\system32\NOTEPAD.EXE" %1
这个结果表明了:文件类型txtfile与开放式命令txtfile="%SystemRoot%\system32\NOTEPAD.EXE" %1相关联。
如果一种文件类型与开放式命令之间的关联出现了问题,而我们知道正确的开放式命令是什么,这时我们只需要在cmd中输入如下命令并回车即可修复:
ftype fileType=openCommandString
这里fileType代表的是指定的文件类型,比如txtfile,这里openCommandString代表的是开放式命令,比如notepad.exe
如果我们的txtfile与开放式命令之间的关联出了问题,我们只需要在cmd中输入:
ftype txtfile="%SystemRoot%\system32\NOTEPAD.EXE" %1
回车。这样,我们也就修复了txtfile文件类型与它的开放式命令之间的关联。
所谓开放式命令,其实就是对这种文件类型的打开方式。
每一种注册了的文件类型,在注册表中都会存在着它的一个对应的注册表项,这个注册表项就是:
HKEY_CLASSES_ROOT\filetype
这个filetype代表的是文件类型,比如batfile文件类型所对应的注册表项就是:
HKEY_CLASSES_ROOT\batfile
ftype命令所修改的注册表项主要就是---HKEY_CLASSES_ROOT\filetype\shell\open\command---这个项的默认值的数据。
但需要注意的是,ftype命令所修改的并不仅仅是这个默认值的数据。因而直接在注册表中修改这个数据,并不能代替ftype命令的修改。
当然,ftype命令所修改的全部的东西都可以在注册表中找到,但是,我们那样一一地去找,远不如用ftype命令简单修改来得爽。
右键打开方式
前面我们谈到了扩展名与文件类型的关联,文件类型与开放式命令的关联(也就是文件的打开方式),看起来好象我们关于文件关联的问题就谈完了,实则不然,还有另外的一个重要的方面我们没有谈到。这就是我们右击一个文件,选择打开方式(并不是所有文件右键都有打开方式这个选项的),然后我们选择一个程序,并把“始终使用这种程序打开同类型文件”前的勾选上,点确认。比如本文开头的那位朋友,把所有快捷方式都选择以word程序打开一样。这样之后,这个文件类型也就与这个开放式命令关联起来了。
ftype命令是修改文件类型与开放式命令的关联的,而右键打开方式也可以修改文件类型与开放式命令的关联,这二者的关系是什么呢?
我们发现,ftype命令和右键打开方式,这二者所修改的注册表项是不同的。Ftype命令所修改的注册表项是:
HKEY_CLASSES_ROOT\filetype
这个filetype代表的是文件类型,比如HKEY_CLASSES_ROOT\lnkfile
而右键打开方式所修改的主要注册表项是:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ext
这个.ext代表的是文件扩展名,比如:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk
按照我的理解,ftype命令所修改的内容属于系统设置,而右键打开方式所修改的内容则属于用户设置,这二者所设置的实际对象是一样的,当二者不一致的时候,用户设置优先于系统设置。
三个注册表项
总之,文件关联所涉及到的注册表项主要是三个:
HKEY_CLASSES_ROOT\.ext
HKEY_CLASSES_ROOT\filetype
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ext
问题解决
现在要回到我们在开头所说到的问题了。
我教那位朋友首先输入:
assoc .lnk
返回的命令结果是:
.lnk=lnkfile
这表明,扩展名.lnk与文件类型lnkfile之间的关联没有问题。
我再要他输入:
ftype lnkfile
返回的命令结果是:
没有找到文件类型“lnkfile”或者与其相关的开放式命令
而这个结果是正常的,这表明,系统设置中的lnkfile与开放式命令之间的关联也没有问题。
那么,问题只能出在用户设置中的lnkfile与开放式命令之间的关联出现了问题。
一般的情形下,右键打开方式的设置优先于ftype命令对文件关联的设置,这在xp和win7下都是一样的,但对于扩展名为.lnk的快捷方式,二者却具有不同。在win7下,即便是对于.lnk快捷方式,也是右键打开方式的设置优先于ftype命令的设置。
找到了问题所在,我们就可以知道,对于这种快捷方式的文件关联错误,我们用assoc和ftype命令都是无法解决的。解决的办法就是:
在注册表中右键删除下面这个注册表项:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk\UserChoice
这个注册表项下的值和数据(具体就是名为progid的值和它的数据),是对应右键打开方式所设置的默认打开程序的。
在删除后,重启电脑,或者重启explorer,问题完美得到解决。
除了这种解决办法,其它的解决办法暂时没有找到。
顺便说一下,在XP下,UserChoice这个注册表项是没有的。
由于一些文件右键没有打开方式选项,在xp下,我们可以在我的电脑里面点工具----查看----文件夹选项---文件类型,这里我们可以进行同样的设置,而在win7下,我们可以在----控制面板---程序---默认程序----始终使用指定的程序打开此文类型---里面进行设置,xp下设置的可选项要多得多,而win7下则的设置则极为简明。限于篇幅,具体的设置就不讲了。
分享到:
相关推荐
- VC++6可能依赖一些注册表项,这些在Win7系统中可能不存在或被阻止。使用注册表编辑器(regedit),找到`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers`路径,创建一个...
"如何更改win7文件的打开方式" 文件关联是 Windows 操作系统中的一种机制,它可以将文件类型与开放式命令关联起来,使得用户可以使用指定的程序打开特定的文件类型。然而,在 Windows 7 中,有时文件关联可能会出现...
总的来说,恢复Win7中EXE文件关联的问题主要涉及对注册表的正确修改。遵循以上步骤,一般可以有效地解决应用程序只能通过IE打开而不能正常运行的问题。当然,预防此类问题的发生,定期更新操作系统、安装防病毒软件...
标题中的“在win7中打开后缀为hlp的帮助文件”指的是Windows 7操作系统中遇到的一个常见问题。在Windows 7及更新的操作系统版本中,由于安全性和兼容性改进,微软不再内置支持打开`.hlp`(帮助)文件的组件。`.hlp`...
标题中的“xp帮助文件在Win7下也可以打开”意味着Windows 7系统原本不兼容Windows XP格式的帮助文件(.hlp),但通过特定的更新或工具,用户可以在Win7环境中查看这些文件。这个问题主要涉及到Windows系统的版本兼容...
在压缩包内的两个文件——"win7无法打开查看.hlp帮助文件补丁Windows6.1-KB917607-x64位.msu"和"win7无法打开查看.hlp帮助文件补丁Windows6.1-KB917607-x86位.msu"——分别是针对64位和32位系统的补丁。`.msu`文件是...
在Windows 7操作系统环境下,使用Visual C++ 6.0(简称VC6)进行编程时,用户可能会遇到一些打开文件的错误。这些错误通常表现为无法正常读取...通过以上步骤,大多数Win7环境下VC6的文件打开错误应该能得到有效解决。
标题中的“win7下打开shs片段文件”指的是在Windows 7操作系统中处理SHS(Shell Scrap)文件的问题。SHS文件是Windows操作系统中的剪贴板碎片文件,通常由Windows的剪贴簿查看器(ClipBook Viewer)创建,用于存储和...
以下是对如何在Win7下打开SHS文件的详细步骤以及涉及的相关知识点的解释: 1. **SHS文件的用途**: - SHS文件主要用于临时存储用户从剪贴板复制的信息,如文本、图片等。 - 这种文件一般不在常规操作中直接打开,...
Win7 系统中没有一个现成的提供更改文件图标的工具,导致用户需要借助第三方软件来实现文件图标的修改。然而,在这里,我们将介绍如何通过修改注册表来更改文件图标,达到不使用其他软件的目的。 首先,让我们以 *....
总结来说,"去除win7快捷方式剪头BAT文件"提供了一个便捷的方法,通过修改注册表来实现快捷方式箭头的去除。它利用了批处理文件的自动化特性,简化了用户手动操作的步骤,使得这一调整过程变得更加容易。但同时,也...
在Windows 7操作系统中,有时会遇到MSI(Microsoft Installer)文件无法安装、无法识别或无法打开的问题。这个问题通常是由于Windows Installer服务发生故障或者系统设置被更改所导致的。以下是一份详细的解决步骤,...
当移动/复制或者解压一些文件时,win7就已经按某种排序方式把新来的文件“自动排序”。如果想分享几个文件给别人,通常我们会先把要分享的文件拖拽到一边,选中全部之后再统一发送,可是到了Windows 7炒作系统后不行...
在Windows 7操作系统中,有时由于工作需求或其他原因,用户可能需要修改文件的关联和打开方式。例如,上述情况中,用户希望用Office Outlook打开.eml格式的邮件,但不小心设置了“始终使用选择的程序打开这种文件”...
### 如何在Win7系统中更改文件后缀的默认打开方式 #### 背景介绍 在日常工作中,我们经常需要处理各种类型的文件,比如文档、图像、视频等。为了更好地适应不同场景的需求,通常一台计算机上会安装多个用于处理同一...
标题中的“xp、win7右键添加打开快捷方式所在目录.zip”表明这是一个关于在Windows XP和Windows 7操作系统中通过右键菜单增加“打开快捷方式所在目录”功能的教程或工具包。这个功能允许用户快速访问快捷方式指向的...
二、解决 win7 下 vc++6.0 打开文件、添加工程程序崩溃 在 Windows 7 下运行 VC++6.0,使用“文件”菜单下“打开文件”命令或“工程”菜单下“Add to Project”子项“Add file to Project”命令时,系统提示“出现...
在Windows 7操作系统环境下,经典的Visual C++ 6.0(简称VC6)开发环境可能会遇到一些兼容性问题,尤其是在尝试打开文件或向工程中添加文件时,VC6可能会突然崩溃。这个问题主要源于Windows 7对旧版软件的兼容策略...
标题中的“win7怎样打开SHS文件”是一个关于在Windows 7操作系统中处理SHS(Shell Scrap)文件的问题。SHS文件是微软Windows系统中的一种特殊文件格式,主要用于存储剪贴板的内容,如文本、图像等。这类文件通常与...