CHM打不开
- 格式:doc
- 大小:29.50 KB
- 文档页数:4
chm文件打不开CHM文件打不开简介:CHM(Compiled HTML Help)文件是一种基于HTML的电子文档格式,常用于软件帮助手册和电子书等场景。
然而,有时候用户会遇到CHM文件无法正常打开的问题。
本文将探讨CHM文件打不开的原因,并提供解决方案。
一、原因分析:1. 文件损坏:CHM文件可能由于下载过程中出现网络问题、存储设备故障或病毒感染等原因而损坏。
2. 安全设置:某些防病毒软件或防火墙可能会阻止CHM文件的正常打开,将其视为潜在的安全风险。
3. 注册表错误:如果操作系统的相关注册表出现问题,可能导致CHM文件无法正常加载。
二、解决方案:下面是几种常见的解决方案,供您参考:1. 修复损坏的文件:如果CHM文件损坏,尝试通过重新下载文件或使用备份文件来解决问题。
也可以尝试在不同的设备上打开文件,以确定是否与特定设备相关。
2. 解除安全设置:检查您的防病毒软件或防火墙设置,确保它们不会阻止CHM文件的访问。
您可以将CHM文件所在的文件夹添加至安全软件的信任列表中。
3. 修复注册表错误:使用系统自带的注册表编辑器(regedit)来检查并修复相关注册表项。
请注意,在更改注册表之前,请务必备份您的系统。
4. 使用HTML Help Workshop重新编译文件:HTML Help Workshop是一个用于创建、编译和修改CHM文件的免费工具。
将CHM文件导入到HTML Help Workshop中并重新编译,有助于修复可能出现的编码或格式错误。
5. 使用替代的CHM文件浏览器:如果尝试上述解决方案后问题仍未解决,可以考虑使用其他CHM 文件浏览器。
例如,Sumatra PDF、WinCHM等软件可以打开CHM文件,并且不受某些限制的影响。
6. 检查操作系统的语言设置:CHM文件可能无法正常打开是因为文件路径包含了非ASCII字符,而操作系统的默认语言设置可能无法正确解析这些字符。
尝试更改系统的语言设置或将CHM文件移动到不含非ASCII字符的路径中。
标题:如何解决打不开的CHM文件问题1. 简介CHM文件- CHM文件是一种微软开发的帮助文件格式,通常用于存储软件的帮助文档和教程等信息。
它采用HTML格式进行内容存储,可以包含文本、图像、信息和其他多媒体内容。
CHM文件一般会包含一个索引和一个搜索功能,方便用户快速查找需要的信息。
2. CHM文件打不开的常见原因- CHM文件打不开通常有以下几个原因:- 文件损坏:CHM文件可能由于文件损坏导致无法正常打开。
- 安全限制:某些操作系统和防火墙软件可能会限制CHM文件的打开,以防止恶意代码的运行。
- 依赖文件缺失:CHM文件可能依赖于其他文件,如果这些文件丢失或损坏,就会影响CHM文件的打开。
3. 解决方法一:修复损坏的CHM文件- 如果CHM文件由于损坏而无法打开,可以尝试使用CHM修复工具进行修复。
这些工具可以检测和修复CHM文件中的损坏部分,使文件恢复正常。
4. 解决方法二:解除安全限制- 如果操作系统或防火墙软件限制了CHM文件的打开,可以尝试解除这些安全限制。
具体操作方法取决于所使用的软件和系统,可以参考相关的帮助文档进行设置。
5. 解决方法三:恢复依赖文件- 如果CHM文件依赖的其他文件丢失或损坏,可以尝试重新安装相关的软件或组件,或者手动恢复这些文件。
确保CHM文件所需的环境和依赖文件完整,可以解决打不开的问题。
6. 解决方法四:使用其他软件打开- 如果以上方法都无法解决问题,可以尝试使用其他软件打开CHM文件。
有些第三方的CHM文件阅读器可能能够兼容更多的CHM文件格式,解决打不开的问题。
7. 结语- CHM文件是常见的帮助文档格式,在使用过程中可能会遇到打不开的问题。
通过修复损坏、解除安全限制、恢复依赖文件或者使用其他软件打开,可以解决CHM文件打不开的问题。
希望本文提供的方法能够帮助读者解决相关的困扰。
8. 进一步解决方法:使用CHM文件转换工具- 如果以上方法仍无法解决问题,可以考虑使用CHM文件转换工具。
CHM文件打不开的最终解决办法答这个问题的发生,是由于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之后出来一个注册成功的对话框,确定然后重启系统。
呵呵,根据我亲自测试,该方法不适用我的系统,但是如果其他人碰到此类问题的时候可以试一下.以上是我刚用的能解决问题的办法:既然注册hhctrl.ocx不能解决问题,很有可能是协议出了问题。
HH.EXE 用的是ms-its 等协议,这些协议应该是由某个DLL 文件提供服务的。
问题是,是什么DLL 呢?于是再用Google 搜索ms-its 协议。
终于找到了,原来是一个itss.dll 在做服务。
OK,找到该服务就要,再注册一下:regsvr32 itss.dll 重启嘿嘿,再打开CHM的文件,问题得到解决了,CHM可以正常的阅读电脑说找不到HH。
EXE文件,用来打开HYML已编译的帮助文件的,有何解救一打开就说文件找不到,是不是我误删除了什么windows的文件?首先,在微软网站上下载HHUPD.EXE,安装HH.EXE后并运行。
然后运行“regsvr32C?押\windows\system\hhopen.ocx”等CHM相关文件。
如果还是不能正常打开CHM文档,就看看你的注册表中的“HKEY_CLASSES_ROOT\chm.file\shell\open\command”分支,如果分支下面除了默认项外,还多了一个“command”字符串,就把它删除,这样CHM文件就能正常打开了。
打开CHM文件提示mk:@MSITStore怎么办
方法一、windows自带的hh.exe打开
关于chm是是什么格式文件,怎么打开学无忧在前面就有涉及讲到,可以去看看这篇文章。
上面就是通过利用Windows系统自带的hh.exe程序进行文件转换打开chm文件,所以尝试先用这种方法来打开chm文件查看是否会出现该提示的状况。
方法二、修复关联chm文件
右键关联chm文件的“打开方式”到WindowsHH.exe,然后在命令行运行regsvr32 itss.dll,最后在命令行运行regsvr32 hhctrl.ocx。
通过这行这两个程序来恢复文件关联,通过hh.exe来打开chm文件,故障应该就解除了。
方法三、注册表dll文件丢失
注册表被破坏,dll文件被丢失。
导致协议出现问题,一般是itss.dll文件被丢失造成,所以可以尝试在网上重新下载itss.dll文件保存在相应的路径来修复注册表。
方法四、语言设置导致
也有网友反馈到是你的系统语言设置有问题并不是中文,先看看你的OS语言是不是中文,这里可以到控制面板中看看那个“语言和区域” 的自定义,打开看看“区域选项” 中语言是不是“中国”,如果设置成其他语言的话是对一些软件有一些影响,将其设置为中文来修复故障。
当然如果你的CHM文件是中文的,也不排除存在缺省语言设置问题的可能性。
可能你用是的英文版的WINDOWS,把RAGIONAL AND LANGUAGE OPTIONS中的LANGUAGE 和ADVANCED 中的语言和国家选项都设置成中文(PRC)。
chm文件打不开2009-02-04 13:33小知识: 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 为后缀的文件,可是在我的计算机上总是无法打开(该计算机上的系统为64 位Win7 系统),郁闷的我不得不在网上找解决办法。
功夫不负有心人,我终于找到了解决的办法。
方法的具体内容:将以.chm 为后缀的文件压缩为以.rar 为后缀的压缩文件,然后在压缩文件中打开文件(注意:在压缩文件中打开是指双击压缩文件,然后再双击相应的.chm 文件),这样就可以查看了。
如果这种方法不行,朋友们可以试一下下面这些复杂的方法(不过在此声明一点,因为没有尝试过这些方法,所以我并不知道它们是否可行)。
一、如果提示是:Internet Explorer 不能链接到您请求的网页或者打开后“页面无法显示”。
请在要打开的CHM文件上右键属性,会在底下属性中多了一个“解除锁定”,点击后就可以正常显示了。
或者在记事本中保存下列内容为00.reg:REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\HHRestrictions] "MaxAllowedZone"=dword:00000003 "UrlAllowList"="" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions] "MaxAllowedZone"=dword:00000003 "UrlAllowList"=""以上内容复制到一个文本文件,然后把文件名后缀改成.reg,然后点击即可二、如果提示是:"不能打开文件mk:@MSITStore:\****.chm" 造成这个故障有可能是你的系统中的Hhctrl.ocx文件丢失或者被其他版本的Hhctrl.ocx覆盖掉了,可以从相同的电脑或者安装光盘中拷贝过来一个,然后重新注册Hhctrl.ocx文件:具体步骤如下:第一步:退出正在运行的所有程序,单击“开始-〉程序”;第二步:在运行对话框键入"regsvr32 c:\windows\system\hhctrl.ocx"回车,或”regsvr32 /i hhctrl.ocx“出现"DllRegisterServer成功"消息确定,重启计算机即可。
为什么chm格式的文件不能打开?一.如果不能打开,可这样恢复文件关联:1、开始运行,输入:regsvr32 C:\windows\system32\hhctrl.ocx ,确定,重新关联文件。
2、执行一下windows目录里的hh.exe 。
有时候chm文件放在中文目录就不行。
包括中文chm名字。
试着把文件考出来.中文名字一改.二.1.在微软网站上下载hhupd.exe,安装hh.exe后并运行。
2.实际上,下载hhupd.exe后,运行后就可以了。
这个东西大小为461kb3.在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.exe2,在命令行运行regsvr32 itss.dll3,在命令行运行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,然后单击“确定”。
.chm⽂件打不开,⽆法找到“mk:@MSITStore:....路径请确保路径或Inte。
.chm⽂件打不开,⽆法找到“mk:@MSITStore:….路径请确保路径或Internet地址正确”其实是注册表错误,经常删除某些软件或IE浏览器出问题你可以通过以下⽅法修复:⽅法⼀:可以尝试IE修复软件进⾏修复。
⽅法⼆:1.⼿动修复,将以下代码复制到记事本。
2.然后:⽂件->另存为->保存类型修改为“所有⽂件”,⽂件名为xxx.reg.记住⽂件后缀名是.reg。
3.保存C盘⽬录,找到⽂件双击打开导⼊即可。
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}]“InfoTip”=”@C:\WINDOWS\system32\ieframe.dll.mui,-881”“LocalizedString”=”@C:\WINDOWS\system32\ieframe.dll.mui,-880”[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\DefaultIcon]@=”C:\WINDOWS\system32\ieframe.dll,-190”[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\InProcServer32]@=”C:\WINDOWS\system32\ieframe.dll”“ThreadingModel”=”Apartment”[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\shell]@=”OpenHomePage”[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\shell\NoAddOns]@=”Start Without Add-ons”“LegacyDisable”=””[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\shell\NoAddOns\Command]@=”\”C:\Program Files\Internet Explorer\iexplore.exe\” -extoff”[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\shell\OpenHomePage]@=”Open &Home Page”“MUIVerb”=”@shdoclc.dll,-10241”“LegacyDisable”=””[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\shell\OpenHomePage\Command]@=”\”C:\Program Files\Internet Explorer\iexplore.exe\””[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\Shellex][HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\Shellex\ContextMenuHandlers][HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\Shellex\ContextMenuHandlers\ieframe] @=”{871C5380-42A0-1069-A2EA-08002B30309D}”[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\Shellex\MayChangeDefaultMenu]@=””[HKEY_CLASSES_ROOT\CLSID{871C5380-42A0-1069-A2EA-08002B30309D}\ShellFolder]“Attributes”=dword:00000024“HideFolderVerbs”=””“WantsParseDisplayName”=””“HideOnDesktopPerUser”=””@=”C:\WINDOWS\system32\ieframe.dll,-190”“HideAsDeletePerUser”=”“。
CHM打不开.txt等待太久得来的东西多半已经不是当初自己想要的了。
一层秋雨一阵凉,一瓣落花一脉香,一样流年自难忘,一把闲愁无处藏。
幸福生活九字经:有希望,有事干,有人爱。
女人和女人做朋友,要之以绿叶的姿态,同时也要暗藏红花的心机。
如果Windows XP 不能打开chm格式的文件,1、如果提示是:如果提示是Internet Explorer 不能链接到您请求的网页或者打开后“页面无法显示”。
请下载jjhd.zip,执行。
或在要打开的CHM文件上右键属性,会在底下属性中多了一个“解除锁定”,点击后就可以正常显示了。
jjhd.reg内容REGEDIT4[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp][HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\HHRestrictions] "MaxAllowedZone"=dword:00000003"UrlAllowList"=""[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions] "MaxAllowedZone"=dword:00000003"UrlAllowList"=""以上内容复制到一个文本文件,然后把文件名后缀改成.reg,然后点击即可2、如果提示是:"不能打开文件mk:@MSITStore:\****.chm"造成这个故障有可能是你的系统中的Hhctrl.ocx文件丢失或者被其他版本的Hhctrl.ocx覆盖掉了,可以从相同的电脑或者安装光盘中拷贝过来一个,然后重新注册Hhctrl.ocx文件:具体步骤如下:第一步:退出正在运行的所有程序,单击“开始-〉程序”;第二步:在运行对话框键入"regsvr32 c:\windows\system\hhctrl.ocx"回车,或”regsvr32 /i hhctrl.ocx“出现"DllRegisterServer成功"消息确定,重启计算机即可。
3、其它方法3.1,从windows的控制面板进入“语言和区域”-“区域选项”,如果区域不是中文请改为中文3.2,把文件名称改为 E 文的简单一点(a.chm),copy 到一个根目录下面,打开看看,如果不行,请重新下载,有的时候下载过程出了问题,看看是否OK3.3,如果多数CHM都打不开,试试重新注册regsvr32 itss.dll3.4,开始--运行--输入“regedit”,打开注册表,找到以下分支:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions在其下新建DWORD键MaxAllowedZone,将其值取成3试一下3.5,没有正确安装或被你删除了hh.exe文件,你可以到Windows\system32下查一下。
如果是这样那你可以从别人的电脑上copy一个 hh.exe ,放到上面那个目录里,再双击一个chm文件,让你选择程序就选那个C:\windows\hh.exe ,这样就恢复了chm文件和hh.exe的关联3.6,如果以上几种情况都好的话,删除"hh.dat", 在目录\Documents and Settings\%username%\Application Data\Microsoft\HTML Help 下,这个文件包含一些内容可能引起错误4、开始--运行--输入“regedit”,打开注册表,找到以下分支:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions在其下新建DWORD键MaxAllowedZone,将其值取成3试一下5、没有正确安装或被你删除了hh.exe文件,你可以到Windows\system32下查一下。
如果是这样那你可以从别人的电脑上copy一个 hh.exe ,放到上面那个目录里,再双击一个chm 文件,让你选择程序就选那个C:\windows\hh.exe ,这样就恢复了chm文件和hh.exe的关联6、如果以上几种情况都好的话,删除"hh.dat", 在目录\Documents and Settings\%username%\Application Data\Microsoft\HTML Help 下,这个文件包含一些内容可能引起错误这个可能是系统Dll文件或者程序DLL文件被删除了,但是注册信息还留在注册表里面,所以系统启动时会加载,从而出现错误。
注册表修改法:“开始”→“运行”处输入“regedit”,在“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\”中,右边窗口找到残留的程序名删除。
或者打开注册表编辑器,在编辑→查找中,输入出错文件名,把搜到的删除,按F3键,搜索下一个,直到删完所有的为止。
开始菜单-运行-输入msconfig回车在里边的启动栏里把**.dll前面的勾去掉就行了1、开始——运行——msconfig——启动——把加载项***.dll的那个勾勾去掉。
重启电脑,通常到这就可以了,如果还弹出来再进行第二步2、开始——运行——regedit 在下面的位置删除相应键值:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run.根据你的描述,那应该是一个已被删除了的病毒或间谍软件。
但也有可能是你卸载某个软件不正确留下的残留.dll因为某些原因(最大的可能是因为它是个病毒或流氓软件的dll文件,被杀软删除了)丢失了,但其相关的注册信息却还在,导致系统开机时还加载它,却又找不到它的文件,所以报错。
如果你点击“确定”后,系统没有什么不正常,并且可以正常运行的话,你可以用这个软件清理掉这个开机加载项,以后开机就不会出现这个信息了。
CHM打不开2009年01月02日星期五 20:36复制别人一篇。
懒得再写。
今天去上SSD8的课程,课中,一个同学叫我过去,说:“老师,你做的那个课件在桌面上打不开,是怎么回事呢?”我打了一下,提示:“mk:@MSITStore:C:\Documents and Settings\tinylee\桌面\SSD8教程。
chm”,这样的问题我以前遇到过,是在小松的机子上。
当时我论定是他的机子中病毒了,没有去解决,今天遇到这样的问题,这样解释显然是不行的啊。
那个课件的制作一直是我引以为傲的事情,今天居然打不开了,挺郁闷的,我说:“你先去Carnegie上面吧,我研究一下。
”正说着,又有两个男生发生了同样的事情,我开始怀疑是不是他们从FTP下载的时候,文档被破坏了,我在教师机上重新下了一个,打开没有问题。
这一下挑起了我的兴趣,开始在网上找资料,找了好久,试了很多办法,有一个方法好像有效:在打开chm的路径上,不能出现汉字。
也就是说:把那个chm的路径变成:d:\ssd8.chm,打开就没有问题了。
可是这显然没有解决问题的根本,我继续在网上找找啊……终于找到一篇 :)----------------------------------------------------------------------不能打开CHM文件的原因分析及解决方法这次重装了Windows系统,心想不应该再有什么问题,没想到居然碰上了CHM打不开的情况。
双击一个中文命名的CHM文件例如“全唐诗。
CHM”,弹出一个对话框:“不能打开文件:mk:@MSITStore:F:\全唐诗。
chm”记得以前这种情况也发生过,当时因为事情多,没有功夫理它,只是把文件名改成英文了事。
现在又发生这种情况,一定要把它了结掉。
我本来想打开的CHM文件应该是“F:\全唐诗。
chm”,为什么错误报告中提到的文件名前面多了一串乱七八糟的“mk:@MSITStore:”?难道系统把我本来的文件名擅自篡改了吗?必须观察一下系统打开文件的过程。
我使用了工具filemon (/ntw2k/source/filemon.shtml)来监视系统打开文件的过程,结果发现系统在发出“叮”的一声报告错误之前试图对以下文件取属性:F:\全唐诗。
CHI 但是RESULT为“NOT FOUND”。
难道它要打开的文件是“全唐诗。
CHI”?于是我把文件的扩展名改成CHI,结果是连文件关联都不存在了,更别说打开了。
用Filemon没有解决任何问题。
看来只好求助于SoftICE来追踪了。
我首先想到的是在CreateFileA这个API上面设个断点,这样好监视系统究竟打开了什么文件,结果发现系统试图打开一个叫“F:\???.CHM”的文件并且失败了:galiletteMay 18 2004, 09:55 AM看来问题就在这里了,现在要搞清楚这个“???.chm”究竟是怎么来的,为什么文件名无端地变成了问号。
继续追踪,发现在打开文件之前,系统调用一个叫WideCharToMultiByte的API把Unicode编码的字符串转化成Ansi字符串,但是转化的结果却是错误的:galiletteMay 18 2004, 09:56 AM现在错误的关键原因已经找到了,就是WideCharToMultiByte这个API的调用有问题。
查“Win32 Programmer's Reference”手册或者MSDN发现,这个API的第一个参数是代码页(CodePage),而这个代码页与Windows的语种有关。
例如简体中文的CodePage是936,繁体中文是950,英文就是1252。
仔细观察上面的跟踪过程,我发现我机器的代码页居然是1252(英文),而不是简体中文的936。
这下我明白了,我赶紧打开控制面板,找到“区域设置”一解决办法:竟然是“英语(美国)”。
立即把它改成“中文(中国)”,它说要重新启动,我没理它,不重启。
重新打开“全唐诗。
CHM”,终于Ok了。