windows通过注册表项来关联特殊后缀的文件以及启动他们的程序。有几个地方会有关联信息:
1、HKEY_LOCAL_MACHINE\Software\Classes:该注册表项包括适用所有用户的默认文件关联设置
2、HKEY_CURRENT_USER\Software\Classes:该注册表项包含只适用当前用户的文件关联设置(它会覆盖HKEY_LOCAL_MACHINE项中的设置)
3、HKEY_CLASSES_ROOT:该注册表项目里面的设置是保证Windows浏览器能够选择正确的应用程序打开相应文件的关键所在。在Windows 2000之后,该注册表项目中的文件关联设置分别存在上面所说的两个注册表项中去了。而HKEY_CLASS_ROOT 注册表项则成为融合(注意,对于相关的文件类型,HKEY_CURRENT_USER下面的设置会覆盖HKEY_LOCAL_MACHINE下面的设置)上面两个注册表项内容的一个镜像。为了更新文件关联设置,你必须更新"HKEY_CURRENT_USER\Software\Classess"或者"HKEY_LOCAL_MACHINE\Software\Classess"下的注册表项,而不是直接更新HKEY_CLASS_ROOT下的注册表项。
默认:顾名思义就是默认打开这个后缀的exe
如果用户自己选择了打开方式,并勾选了始终使用该方式打开,则这个后缀文件关联的信息会有所变化,变化项在:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
其中openwithlist是用户选择打开方式的几个选项。对应的exe名称如notepad++.exe在注册表项中也有信息:
userchoice是用户选择的默认打开方式。
如果HKEY_CLASSES_ROOT中的关联后缀注册表项被删除了,也不影响文件的关联关系,只要HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts还有默认打开方式信息