无法打开chm文件怎么办?

来源:互联网 发布:什么样买卖数据犯法 编辑:程序博客网 时间:2024/05/16 19:25
 

 

最近经常听到朋友说无法打开chm文件,自己也经常遇到,网上搜索后把方法总结:
一.如果不能打开,可这样恢复文件关联:
1、开始运行,输入:regsvr32 C:\windows\system32\hhctrl.ocx ,确定,重新关联文件。
2、执行一下windows目录里的hh.exe 。
有时候chm文件放在中文目录就不行。包括中文chm名字。试着把文件考出来.中文名字一改.

二.1.在微软网站上下载hhupd.exe,安装hh.exe后并运行。
2.实际上,下载hhupd.exe后,运行后就可以了。这个东西大小为461kb 3.在c:\windows\system32里找到“Hhctrl.ocx”文件,然后运行:“regsvr32“c:\windows\system32\hhctrl.ocx...
网上的解决方法不可行,下载不了hhupd.exe.我直接执行regsvr32 c:\windows\system32\hhctrl.ocx就ok了。

解决方法2是:
1,右键关联chm文件的“打开方式”到\Windows\HH.exe
2,在命令行运行regsvr32 itss.dll
3,在命令行运行regsvr32 hhctrl.ocx

三.也许是 HH.EXE 所必需的某个组件出了问题。但是不知道 HH.EXE 会用到些什么组件,所以上网查了一下,有人建议重新注册 hhctrl.ocx。我在系统目录下找到了 hhctrl.ocx,重新注册一下 hhctrl.ocx 试试:regsvr32 hhctrl.ocx。依然不能正常阅读 CHM。

既然如此,很有可能是协议出了问题。HH.EXE 用的是 ms-its 等协议,这些协议应该是由某个 DLL 文件提供服务的。问题是,是什么 DLL 呢?于是再用 Google 搜索 ms-its 协议。终于找到了,原来是一个 itss.dll 在做服务。不过网上查到的解决方案是修改注册表。

要修改 ItssRestrictions 注册表项以启用特定的安全区域,请按照下列步骤操作:
1. 单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。
2. 找到并单击下面的子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions
注意:如果该注册表子项不存在,则使用方法 1 中的步骤 2a 和 2b 创建该子项。
3. 右键单击“ItssRestrictions”子项,指向“新建”,然后单击“DWORD 值”。
4. 键入 MaxAllowedZone,然后按 Enter 键。
5. 右键单击“MaxAllowedZone”值,然后单击“修改”。
6. 在“数值数据”框中,键入 0 至 4 之间的一个数字,然后单击“确定”。
7. 退出注册表编辑器。
注意:默认情况下,“MaxAllowedZone”值设置为 0。下表摘要列出了“MaxAllowedZone”值对各个项的解释。 MaxAllowedZone 本地计算机区域 本地 Intranet 区域 受信任的站点区域 Internet 区域 受限站点区域
0 允许 阻止 阻止 阻止 阻止
1 允许 允许 阻止 阻止 阻止
2 允许 允许 允许 阻止 阻止
3 允许 允许 允许 允许 阻止
4 允许 允许 允许 允许 允许

注册表修改之后还是不能打开!
试试偷懒的办法吧——重新注册DLL:regsvr32 itss.dll。

四.操作系统的语言不是中文(经常出现这种情况)
1.看看你的 OS 是不是中文的 OS ? 如果你的 OS 不是 中文的,那么到 Control Pane 中看看那个“语言和区域” 的option, 打开看看“区域选项” 是不是中国,这个选项对一些软件还是有一些影像的。
2.如果你的CHM文件是中文的,可能存在缺省语言设置问题。可能你用是的英文版的WINDOWS,把RAGIONAL AND LANGUAGE OPTIONS中的LANGUAGE 和ADVANCED 中的 语言和国家选项都设置成中文(PRC)。就可以了

五.可以试试改变此文件的名字.比如去掉多余的符号

六.如果都不能,最后一招就是,把电子书CHM格式转换为PDF文件:
CHM Converter是一个专门转换CHM格式的文件,它可以把CHM文件转换成PDF、TXT、DOC等常用的格式。
http://dl.pconline.com.cn/html/1/6/dlid=11896&dltypeid=1&pn=0&.html

下载后运行软件,软件默认

 

系统版本 xp sp2专业版本。
问题:chm文件打开无法显示
文章目的:给像我这样的新手一个思路。并祝福我的弟弟张银州学业有成,一生幸福。

这个问题估计很少有人遇到,我当时自己也不知道自己曾经改动了什么。只是说一下思路。
首先金州上网找寻相关资料。发现一篇比较有价值。


“CHM格式的文件无法显示,而且windows 2000上正常,windows xp上打开后显示无法找到页面。

我在自己的windows xp上试了一下,果然如此。奇怪,但自己的CHM电子书都好好的呀,虽然告知用户此帮助文件有问题,但还是解决问题呀。唉,也是翻了以前所有遇到过的类似问题的纪录,一一尝试都不对。结果倒是那边ERP部门找到厂商咨询后,ERP厂商给出了Solution。原来事情是这样的:

在某些CHM文件中可能会使用到InfoTech协议,而它包含3种协议:ms-its 、its、mk:@msitstore 。利用这些协议,恶意攻击者或者恶意代码将可能导致帮助产生溢出漏洞,从而控制计算机。而MS最新公布的安全更新MS05-026 KB896358修正了这一情况,并屏蔽了远程链接,这就导致了使用了远程链接的一些CHM页面开启失败。趋势安全站点对此漏洞作出了如下描述:

这个安全问题来自于早先公布的微软HTML Help漏洞。HTML Help是Windows平台上的标准帮助系统。作者可以使用它为程序或者多媒体主题或者Web站点创建在线的帮助文件。
由于HTML Help并不会完全校验输入数据的特性,导致这一点可能被利用。一个特殊的CHM文件可以导致帮助系统溢出,这个溢出如果被利用,就可以用于执行恶意代码。
这样的恶意CHM文件可以使用“ms-its”协议,通过IE开启。开启后的CHM文件不再需要用户的参与,就能够自动执行恶意CHM文件和附随的代码。“ms-its”协议是InfoTech 协议的一部分,该协议能够 为ITSS.DLL或者微软InfoTech Storage System Library所执行。当然,这些恶意的程序无法靠自身传播,仍然需要用户在特定的位置,通过IE和“ms-its”协议访问恶意的CHM文件。
这种情况一旦发生,如果受影响的用户当前登录身份是管理员,远程代码执行的漏洞可以允许恶意用户或者恶意软件,获得受影响系统的完全控制权限。
从而这个恶意用户或者恶意程序得以在此系统上执行代码,并使用完全控制权限安装或者运行程序,并能够察看或者编辑数据。因此,这个漏洞同样也能够被用于复制。

受影响的系统:

Microsoft Windows 2000 Service Pack 3
Microsoft Windows 2000 Service Pack 4
Microsoft Windows 98
Microsoft Windows 98 Second Edition
Microsoft Windows Millennium Edition
Microsoft Windows Server 2003
Microsoft Windows XP Service Pack 1
Microsoft Windows XP Service Pack 2
Microsoft Windows Server 2003 for Itanium-based Systems
Microsoft Windows XP -Bit Edition Service Pack 1 (Itanium)
Microsoft Windows XP -Bit Edition Version 2003 (Itanium)
Microsoft Windows XP Professional x Edition
Microsoft Windows Server 2003 Service Pack 1
Microsoft Windows Server 2003 with SP1 for Itanium-based Systems
Microsoft Windows Server 2003 x Edition

我按照 安装 Windows Server 2003 Service Pack 1、MS05-026 或 MS04-023 后,无法使用某些采用 InfoTech 协议的 Web 应用程序 中所述,对客户端注册表作出如下修改,再次尝试执行那些CHM文件,成功了!

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"UrlAllowList"="\\\helpfiles\;file://\\\helpfiles"

需要提到一点的是,默认情况下,子健1.x 下可能并不存在 ItssRestrictions子健,您需要手动创建它,然后在其下创建字符串键值 UrlAllowList 。

关于此补丁及相关问题的描述,请参考如下KB:

安装 Windows Server 2003 Service Pack 1、MS05-026 或 MS04-023 后,无法使用某些采用 InfoTech 协议的 Web 应用程序
MS05-026:HTML 帮助中的漏洞可能允许远程执行代码
安装安全更新 896358 后下载的 Compiled Help Module 文件无法打开”


我的问题明显不是这个问题,原因是我自己的机器我知道,在能打开chm文件,到打开chm文件
无法显示页面这段中间的时间里面,我并没有更新,只是做了一些系统修改。
但是这篇文章还是对我有启发的,比如提到了InfoTech协议。以上说明结束。
虽然网上关于这方面的文章很多,你可以自己搜索看看,但是我当时没有搜索到能针对我的问题解决的方法,

于是决定自己进入测试。以下是金州测试方法:(问题很简单,主要是讲一下思路,金州注释)
1.金州把现在打开chm文件无法显示的状态,做一个系统还原点。
2.RegSnap抓一个快照。
3.导入以前备份的注册表。
结果chm文件打开和以前一样了,就是可以观看正常了。
金州总结为是注册表某些项目丢失原因引起的。
4.RegSnap再抓一个快照,比较一下。
发现项目太多(我备份的注册表比较早了,哈哈),无法详细判断。
这条路断了。
5.大约呆坐着十分钟之后,忽然想起InfoTech协议“ms-its”协议,这就是我搜索到的那篇文章
的启发了,哈哈,这个协议的执行文件是C:\WINDOWS\system32\itss.dll
6.查看这个dll还在。所以准备进行第二种推测,那就是它相关联的调用注册表丢失。
7。开始测试以上推断。搜索注册表有关itss.dll项目,这个比较多,不宜以列举
8.备份所有相关项目。
9.把系统还原到打不开chm时候的状态。
10。导入备份的itss.dll项目,结果可以观看chm文件了,问题解决。证明猜测正确,原因找到。
11.从新还原到打开chm无法显示状态。
12。逐一测试每一个每一个注册表项目,如此循环,直到找到确定关键是那几个注册表项目。
13.最后确定为两个关键项目。如下:
项目1.
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{9D148291-B9C8-11D0-A4CC-0000F80149F6}]
@="Microsoft InfoTech Protocols for IE 4.0"

[HKEY_CLASSES_ROOT\CLSID\{9D148291-B9C8-11D0-A4CC-0000F80149F6}\InprocServer32]
@="C:\\WINDOWS\\System32\\itss.dll"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\CLSID\{9D148291-B9C8-11D0-A4CC-0000F80149F6}\NotInsertable]

[HKEY_CLASSES_ROOT\CLSID\{9D148291-B9C8-11D0-A4CC-0000F80149F6}\VersionIndependentProgID]
@="MSITFS"

项目2.
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\PROTOCOLS\Name-Space Handler\mk\*]
"CLSID"="{9D148291-B9C8-11D0-A4CC-0000F80149F6}"
14.总结,问题确实是InfoTech协议注册表关联丢失问题。

说明1.这个方法也许不适应于解决类似问题,因为造成问题的原因是我个人修改系统的后遗症。
主要是提供一种浅显的思路。
2.文中个人问题于2005-10-08 下午金州发现,傍晚解决完毕,当时把解决方法发到一些论坛
因为前天看到一些朋友在我转载的帖子下面提问题随口而来,不经过丝毫思考测试,所以特意把这个
问题的简单思路总结一下,希望对一些朋友有所帮助。
3.啰嗦一句,我遇到问题的时候总是想1.我尽力了吗?2.我认真查找理解了相关资料了吗?3.我
尝试了各种可能了吗?这就是我的笨人苯方法。哈哈,以此文再次祝福我的弟弟张银州学业有成,一
生幸福快乐。并祝福邪恶八进制和大家。

回答时间:2006-11-13 17:08:18  

原创粉丝点击