120发快装弹鼓:.chm格式我为什么打不开?有什么办法没?

来源:百度文库 编辑:高校问答 时间:2024/04/29 02:14:21

C:\WINDOWS\hh.exe文件受损坏了,给你修复方法

第一种
问题的发生,是由于hhctrl.ocx的版本号出现错误或未正确注册。原因在于安装的其他软件用hhctrl.ocx的旧版本替换了原来的版本。IE6SP1中,这个文件的版本号应为5.2.3735.0。可以看看你的系统这个文件的版本号。位于winnt/system32这个文件夹。大小504K(英文版本)。你可以从其他相同的系统(IE版本也相同)中COPY一份粘贴到你的系统相应文件夹中。然后注册一下。

注意:

1、先替换winnt/system32/dllcache文件夹的这个文件,后替换winnt/system32文件夹里的这个文件;
2、如果看不到这个文件,先工具--文件夹选项中,设置显示隐藏文件,并设置显示系统文件;
3、注册的方法是
开始--运行,输入regsvr32 hhctrl.ocx之后出来一个注册成功的对话框,确定然后重启系统;
4、在WINNT下
双击hh.exe文件,没有出现打开界面;

另外:在WINDOWS安装了安全更新 896358 后,下载的CHM文件无法打开最简单的办法是,点击CHM文件的属性,发现“常规”栏下多出几行字:“安全:此文件来自其他计算机,可能被阻止以帮助保护计算机”点击旁边的解除锁定即可解决

第二种
下面是从网上摘抄的

在某些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协议注册表关联丢失问题