打开CHM文件会产生:“导航到网页已被取消”

时间:2012-07-11 18:00:17

标签: windows chm

我正在尝试打开.chm文件。

我下载了源代码,将其解压缩,然后双击Waffle.chm并单击“打开”,但无论我点击的chm文件中的哪个元素,我都会收到消息:

Navigation to the webpage was canceled.  
What you can try: 
Retype the address.  

enter image description here

这里发生了什么?

10 个答案:

答案 0 :(得分:163)

<强>摘要

Microsoft安全更新896358&amp; 840315从网络驱动器(或UNC path)打开时阻止显示CHM文件内容。这是Windows尝试阻止病毒/恶意软件的攻击媒介感染您的计算机,并阻止了通过此Info文件使用的“InfoTech”协议绘制数据的.chm文件。

Microsoft对此问题的摘要:http://support.microsoft.com/kb/896054

<强>解决方案

  1. 如果您使用的是Windows Server 2008,Windows 7,则Windows已创建快速修复。 右键单击chm文件,您将看到“yourfile.chm Properties”对话框,在底部会出现一个名为“Unblock”的按钮。单击取消阻止并按确定,并尝试再次打开chm文件,它可以正常工作。在WindowsXP(SP3)之前,此选项不适用于早期版本的Windows。

  2. 通过将chm文件移出网络驱动器来解决问题。您可能不知道您正在使用网络驱动器,请立即仔细检查:右键单击.chm文件,单击属性并查看“位置”字段。如果它以两个反斜杠开头,如下所示:\\epicserver\blah\,那么您正在使用网络驱动器。 所以要修复它,复制chm文件,然后将其粘贴到本地驱动器中,如C:\或E:。然后尝试重新打开chm文件,windows不会吓坏。

  3. 最后一种情况,如果您无法从联网驱动器复制/移动文件。如果你必须在它所在的位置打开它,并且你使用的是较低版本的Windows,如XP,Vista,ME或其他版本,你必须手动告诉Windows不要对这个.chm文件感到不满。 HHReg (HTML Help Registration Utility)实用程序自动执行此任务。基本上,您下载HHReg实用程序,加载.chm文件,按确定,它将创建必要的注册表项,以告知Windows不要阻止它。有关详细信息:http://www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/

  4. Windows 8或10? - &GT;升级到Windows XP。

答案 1 :(得分:42)

“解锁”该文件可以解决问题。截图:

enter image description here

答案 2 :(得分:11)

除了Eric Leschinski的回答,还有因为这是stackoverflow,一个程序化的解决方案:

Windows使用隐藏文件分叉将内容标记为“已下载”。截断这些解锁文件。用于CHM的流的名称是“Zone.Identifier”。可以通过在打开文件时附加:streamname来访问流。 (第一次保留备份,以防你的RTL搞砸了!)

在Delphi中,它看起来像这样:

var f : file;
begin
 writeln('unblocking ',s);
 assignfile(f,'some.chm:Zone.Identifier');
 rewrite(f,1);
 truncate(f);
 closefile(f);
end;

我被告知在非分叉文件系统(如FAT32)上有隐藏文件,但我还没有深入到底。

P.S。 Delphi的DeleteFile()也应该识别分叉。

答案 3 :(得分:10)

赢8 x64:

只需将其移动到另一个文件夹或重命名您的文件夹(在我的情况下:我的文件夹是“c#”)。 避免在文件夹名称上使用符号。用信件命名。

进行。

答案 4 :(得分:6)

最终的解决方案是允许InfoTech协议在Intranet区域中工作。

将以下值添加到注册表中,问题应该解决:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000001

此处有更多信息:http://support.microsoft.com/kb/896054

答案 5 :(得分:4)

转到开始

输入regsvr32 hhctrl.ocx

您应该获得如下成功消息:

  

“hhctrl.ocx中的DllRegisterServer成功”

现在尝试再次打开您的CHM文件。

答案 6 :(得分:3)

其他方式是使用不同的第三方软件。 This link显示了更多第三方软件来查看chm文件...

我尝试使用SumatraPDF并且工作正常。

答案 7 :(得分:2)

我使用C ++ Builder在我的软件中以编程方式修复了此问题。

在我分配CHM帮助文件Application->HelpFile = HelpFileName之前,我检查它是否包含&#34; Zone.Identifier&#34;流,当它发生时,我只是删除它。

String ZIStream(HelpFileName + ":Zone.Identifier") ;

if (FileExists(ZIStream))
    { DeleteFile(ZIStream) ; }

答案 8 :(得分:1)

显然有不同级别的身份验证。我阅读的大多数文章都告诉您将MaxAllowedZone设置为“1”,这意味着允许本地计算机区域和Intranet区域,但“4”允许访问“所有”区域。

有关详细信息,请阅读以下文章: https://support.microsoft.com/en-us/kb/892675

这就是我的注册表看起来的样子(我不确定它是否适用于外卡但它似乎对我有用):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000004

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"UrlAllowList"="\\\\<network_path_root>;\\\\<network_path_root>\*;\\ies-inc.local;http://www.*;http://*;https://www.*;https://*;"

另外需要注意的是,奇怪的是,“UrlAllowList”键需要在另一台PC上运行,而不是我的测试版。它可能根本不需要,但是当我添加它时,它解决了问题。用户可能没有关闭原始文件或类似的东西。所以只需考虑一下。我建议尝试至少并测试它,然后根据需要添加。确认后,您可以根据需要进行部署。祝你好运!

编辑: P.S.另一种有效的方法是使用mklink / d(Windows 7或更高版本中的符号链接)在本地映射到网络的路径,但映射网络驱动器号(Z:用于测试)不起作用。只是值得深思,我没有“解锁”任何文件。此外,公认的“解决方案”并没有为我解决问题。

答案 9 :(得分:0)

移动到本地文件夹是最快的解决方案,特别是因为我不是系统管理员(无法编辑注册等),这是工作环境中的典型案例。

Create a folder in C:\help drive, lets call it help and copy the files there and open.

请勿复制到我的文档或其他任何地方,这些位置通常位于办公室设置中的网络驱动器上,无法使用。