注 册 登录
喜悦家园 返回首页

admin的个人空间 http://www.hahaha365.com/?1 [收藏] [复制] [分享] [RSS]

日志

chm无法显示问题(附解决方案)

已有 7043 次阅读2010-5-5 14:43

chm无法显示问题(附解决方案)

    今天碰到了一个奇怪的问题。前两天csdn上下载了一些电子书,今天忽然发现几个chm格式的文档无法显示,而我记得下载时看过都没有问题的,于是只好从网上寻找答案。最后发现是由于chm的文件路径包含了“#”造成的,更改文件夹的名称就解决了。附上chm出错的完整解决方案:

一 chm无法打开:

以下来自:http://blog.csdn.net/riffling/archive/2007/09/29/1805972.aspx

一.如果不能打开,可这样恢复文件关联:

1、从开始菜单中, 选择运行, 然后在命令窗口中,输入:regsvr32 C:\windows\system32\hhctrl.ocx 。确定,重新关联文件。
2、执行一下c:/windows目录里的hh.exe 。有时候chm文件放在中文目录就不行。包括中文chm名字。试着把文件考出来.中文名字一改.

二. 安装hhupd

1. 在微软网站上下载hhupd.exe, 安装hh.exe后并运行。
2. 实际上,下载hhupd.exe后,运行后就可以了。这个东西大小为461kb 3.在c:\windows\system32里找到“Hhctrl.ocx”文件。

3. window开始菜单,选择运行,然后在运行窗口中输入命令: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无法显示

以下来自:http://hi.baidu.com/gzjason/blog/item/65923ad132068b3c9b5027c5.html

1、系统将chm默认关联到“%WINDIR%\hh.exe”,正常时双击即可打开。

2、当chm文件的路径中含有“#”“%”等字符时,chm文件能够打开,但将无法显示。

原因是:打开chm文件,相当于输入一条包含文件路径的命令行语句并执行。当路径中插入“#”“%”等字符后,将使命令行的语义发生变化,导致无法正常使用chm,而此时系统又不会有出错的提示,所以很多人被困扰了。

解决办法:移除路径中的特殊字符。

3、安装微软的安全更新 896358 或 890175 后,该补丁对chm的itss协议做了限制。有的chm使用了该协议,所以导致chm无法显示。

解决办法:可以修改注册表、修改安全级别、改itss.dll(这个是听说的);或者最简便的办法:右键点chm—>选属性—>选解除锁定,ok!

4、如果chm的文件名、或chm里包含的html文件的文件名含有非英文的语言字符,比如中文,麻烦就来了(原因疑与问题二相同)。这种chm必须在该种字符的操作系统下才能正常阅读,否则最多只能打开chm和查看书签,内容则无法显示。

解决办法:目前已经尝试过更改系统区域,将chm转换为pdf,使用AppLocale,使用虚拟打印机等,这些方法都不完美。第一种麻烦,而且需要权限,操作系统还不一定安装了该区域的内码;第二种无法将书签和正文同时转换为正确的编码,总会有乱码出现,处理几十MB以上的chm就开始非常缓慢;第三种基本无效……;第四种,虚拟打印机的安装需要权限,不能解决乱码,且对大体积的文件处理也非常缓慢。


路过

鸡蛋

鲜花

握手

雷人

感谢

我爱你

拥抱

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注 册

QQ|手机版|小黑屋|喜悦家园 ( 京ICP备12029068号-1   对不起,请原谅,谢谢你,我爱你。点击这里给我发消息

GMT+8, 2024-3-28 16:08 , Processed in 0.053873 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部