在win上同时安装有多个版本的maya或3dsmax等软件,当卸载其中之一后所有对应软件文件的图标都将丢失,虽然右键可以手动指定打开方式选择对应程序,但是图标也无法还原成最初的外观,而是一个非常丑陋的效果,这当然不会影响文件使用,但是对于像我这样有强迫症的人是无法容忍的:

这是因为卸载软件时,对应程序文件的打开方式在注册表上会被清除掉,不会再有任何值,手动修改文件的打开方式,只能键入open的值,而缺少DefaultIcon的值,
具体可参考微软官方说明:
[https://docs.microsoft.com/zh-cn/windows/desktop/shell/how-to-assign-a-custom-icon-to-a-file-type](https://docs.microsoft.com/zh-cn/windows/desktop/shell/how-to-assign-a-custom-icon-to-a-file-type)
### 解决办法
解决办法很简单,就是手动在注册表中给该文件类型添加一个“项”,并给对应的值。
首先运行“regedit”,打开注册表编辑器,在`HKEY_CLASSES_ROOT`中找到对应的文件类型,如:ma_auto_file,mb_auto_file等,给每种文件类型新建一个名为“DefaultIcon”的项,

进入到DefaultIcon中,打开默认值,为其添加正确的值:

文件类型的图标一般来自于对应程序的exe文件中,这个ico是无法直接看到的,需要借助工具,比如使用Resource Hacker可以直接打开exe获取到所有图标等信息,通过Resource Hacker可以查看到图标对应的ID,因为一个exe往往是包含有多个图标,比如maya会有不同的文件类型,每个类型都会对应有一种图标或者是图标组,图标组排列顺序(ID从0开始)就是对应的ID编号。

注册表设置完成后,选择对应文件右键再次指定打开方式,选择对应的exe,这时所有同类型的文件图标都会刷新成正常状态:

[scode type="green"]当然也可以利用此方法,修改个性的文件图标外观。[/scode]