轉自neeao's blog
今天開啟一個.chm格式的協助檔案查點資料,和平常一樣雙擊檔案,提示:
打不開檔案 .chm
上網查了下,找到了一個解決方案:
引用
小知識: CHM 意為 Compiled HTML。以CHM為副檔名的檔案表徵圖通常為一個帶問號的文檔表徵圖,表示協助文檔,是 Microsoft 自 Windows 98 以來提供的一種協助文檔格式的檔案,用於替代 Windows 95 下的 HLP(Help) 檔案。Microsoft 自 Windows 98 以來,作業系統中都內建解譯器(開啟 CHM 檔案的工具),即 Windows 安裝目錄下的 HH.EXE。CHM 檔案可以通過官方免費提供了 HTML Help Workshop 產生,它的源檔案是 HTML 檔案。現在網路上很多電子書籍都被製作成 CHM 格式。
------------------------------------------------------------------
前幾天想開啟一本 CHM 格式的電子書,查點東西,沒想到,開啟的視窗裡竟然提示不能開啟頁面。因為一直很少用協助,所以也不知道是什麼時候開始出現了這個問題的。因為沒時間去考慮,所以先在網上查了資料,把這個問題放下了。
今天又一次開啟某 CHM 文檔的時候,發生了同樣的問題。這次有時間。試了一下,幾乎所有 CHM 檔案都打不開了。看樣子是開啟過程(指的是系統中的操作過程,非人為操作過程)中的某個關鍵步驟出了問題。
CHM 的實質是通過幾個特殊的協議訪問壓縮存在在 CHM 檔案中的網頁。所以,我估計可能是防火牆有鬼。於是把防火牆統統仔細檢查了一遍,沒有限制 CHM 檔案打讀取。關閉所有防火牆,CHM 仍然不能正常閱讀。
也許是 HH.EXE 所必需的某個組件出了問題。但是不知道 HH.EXE 會用到些什麼組件,所以上網查了一下,有人建議重新註冊 hhctrl.dll。我在系統目錄下找到了 hhctrl.ocx,沒有找到 hhctrl.dll。就當是網上寫錯了,重新註冊一下 hhctrl.ocx 試試:regsvr32 hhctrl.ocx。依然不能正常閱讀 CHM。
既然如此,很有可能是協議出了問題。HH.EXE 用的是 ms-its 等協議,這些協議應該是由某個 DLL 檔案提供服務的。問題是,是什麼 DLL 呢?於是再用 Google 搜尋 ms-its 協議。終於找到了,原來是一個 itss.dll 在做服務。不過網上查到的解決方案是修改註冊表。看著那一堆登錄機碼就頭痛,還是先試試偷懶的辦法吧——重新註冊DLL:regsvr32 itss.dll。
再試,嘿,好了,CHM 又可以正常開啟了。
至於 CHM 不能開啟的原因,據網上說,多半是因為 Microsoft 最近修複的一個關於 HTML Help 的漏洞有關係。不過我機器上的狀況不太符合特徵,管它呢,反正我又能閱讀 CHM 了。