安裝mathcad15M040,使用SolidSQUAD的xx文件替換原始mathcad.exe,重啟電腦后,mc文檔xmcd(z),mc模板xmct,還有mc電子書(shū)hbk,這類文件的圖標(biāo)統(tǒng)統(tǒng)丟失了,變成了無(wú)圖標(biāo)的樣式,看上去就是沒(méi)有與任何程序關(guān)聯(lián)的樣子。
卸載mc后重新安裝一遍,發(fā)現(xiàn)圖標(biāo)正常了,但當(dāng)重新啟動(dòng)電腦后,圖標(biāo)又丟失了,所以這并不是安裝不成功導(dǎo)致的。
正常情況下,文件圖標(biāo)顯示成什么樣子與關(guān)聯(lián)的程序有關(guān),我發(fā)現(xiàn)我可以通過(guò)雙擊xmcd文檔直接打開(kāi)mathcad并成功載入文檔,說(shuō)明xmcd文檔正常地與mathcad進(jìn)行了關(guān)聯(lián),因此這個(gè)問(wèn)題并不是由于文件關(guān)聯(lián)失敗導(dǎo)致的。
文件顯示什么樣的圖標(biāo),通常是與它所關(guān)聯(lián)的exe程序相關(guān)的,圖標(biāo)可以存放在exe文件或dll文件中的。我注意到每次安裝好mathcad直到重啟前,文檔圖標(biāo)都是能夠正常顯示的,只有在重啟后才會(huì)出現(xiàn)圖標(biāo)消失的情況,因此懷疑是存放圖標(biāo)的文件發(fā)生了異常。
而異常現(xiàn)象發(fā)生前,我只做了兩件事:
- 用SolidSQUAD的xx文件替換了原始mathcad.exe
- 重啟電腦
也許是SolidSQUAD在xx時(shí)沒(méi)有把exe中的圖標(biāo)保留下來(lái),導(dǎo)致系統(tǒng)重啟后不能在xx文件中找到圖標(biāo),因此所有與mathcad關(guān)聯(lián)的文件都沒(méi)了原來(lái)的圖標(biāo)。
通過(guò)一個(gè)簡(jiǎn)單的方法驗(yàn)證——給快捷方式換圖標(biāo)。在桌面上建立一個(gè)mathcad快捷方式,然后從其屬性中更改圖標(biāo),定位到SolidSQUAD的xx文件,提示該exe文件中不包含圖標(biāo)。
可以確認(rèn)圖標(biāo)異常的原因正是SolidSQUAD的xx文件中沒(méi)有保留mathcad的圖標(biāo)。
解決這個(gè)問(wèn)題,可以有兩個(gè)選擇:
- 通過(guò)PE Explorer這個(gè)軟件,把原始mathcad.exe中的圖標(biāo)文件提取出來(lái),再保存到xx文件中去
- 通過(guò)修改注冊(cè)表中關(guān)于文件關(guān)聯(lián)的部分,將xmcd(z),xmct,hbk文件的默認(rèn)圖標(biāo)路徑設(shè)置到存在的圖標(biāo)文件。
我采用了第二種方法,因?yàn)閙athcad安裝時(shí)默認(rèn)在C盤(pán)中保留了帶圖標(biāo)的exe文件,路徑如下
C:\WindowsInstaller\{A8C99049-C1FC-4B5D-803C-194745073E53}
可能不同電腦上最后一個(gè)文件夾的名稱不同,待確認(rèn)。
文件名是icon2.exe,icon3.exe,icon3.exe,一共有三個(gè)文件。經(jīng)MD5校驗(yàn),這3個(gè)文件是完全一樣的,每一個(gè)文件中都保存了mathcad相關(guān)文檔的圖標(biāo)。
注冊(cè)表中存放文件圖標(biāo)路徑的地方,比如xmcd文件的圖標(biāo)路徑信息,在‘HKEY_CLASSES_ROOT\Mathcad xmcd\Defaulticon‘,默認(rèn)值是:
“mathcad安裝路徑\mathcad.exe”,1
這表示操作系統(tǒng)對(duì)于xmcd文件會(huì)使用mathcad.exe中的第2個(gè)圖標(biāo)來(lái)顯示(第一個(gè)圖標(biāo)的序號(hào)是0)。
把它設(shè)置為icon2.exe中的第2個(gè)圖標(biāo),改成下面這樣
"%SystemRoot%\Installer\{A8C99049-C1FC-4B5D-803C-194745073E53}\icon2.exe",1
重啟電腦,圖標(biāo)恢復(fù)正常,如法炮制,對(duì)其他幾個(gè)類型的文檔進(jìn)行設(shè)置,問(wèn)題解決。
下面是修改后導(dǎo)出的注冊(cè)表信息
(測(cè)試環(huán)境:32位 win7 sp1)
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Mathcad xmcd\Defaulticon]
@="\"%SystemRoot%\\Installer\\{A8C99049-C1FC-4B5D-803C-194745073E53}\\icon2.exe\",1"
[HKEY_CLASSES_ROOT\Mathcad xmcdz\Defaulticon]
@="\"%SystemRoot%\\Installer\\{A8C99049-C1FC-4B5D-803C-194745073E53}\\icon2.exe\",1"
[HKEY_CLASSES_ROOT\Mathcad xmct\Defaulticon]
@="\"%SystemRoot%\\Installer\\{A8C99049-C1FC-4B5D-803C-194745073E53}\\icon2.exe\",1"
[HKEY_CLASSES_ROOT\Mathcad mct\Defaulticon]
@="\"%SystemRoot%\\Installer\\{A8C99049-C1FC-4B5D-803C-194745073E53}\\icon2.exe\",1"
[HKEY_CLASSES_ROOT\Handbook.Document\Defaulticon]
@="\"%SystemRoot%\\Installer\\{A8C99049-C1FC-4B5D-803C-194745073E53}\\icon2.exe\",2"
就是這樣。