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

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

我下载了源代码,提取了它,然后双击 Waffle.chm,点击“ Open”,但是无论我点击 chm 文件中的哪个元素,我都会得到这样的信息:

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

enter image description here

这是怎么回事?

126112 次浏览

摘要

当从网络驱动器(或 UNC 路径)打开时,Microsoft 安全更新896358 & 840315块显示 CHM 文件内容。这是 Windows 试图阻止病毒/恶意软件的攻击载体感染您的计算机,并阻止了。通过“ InfoTech”协议绘制数据的 chm 文件,这个 chm 文件使用。

微软的问题摘要: http://support.microsoft.com/kb/896054

解决方案

  1. 如果您正在使用 WindowsServer2008,Windows7,则 Windows 已创建了一个快速修复程序。并尝试再次打开 chm 文件,它正常工作。此选项不适用于 WindowsXP (SP3)之前的 Windows 早期版本。

  2. 通过将 chm 文件从网络驱动器上移动来解决这个问题。您可能不知道您正在使用网络驱动器,请再次检查: 右键单击您的。Chm 文件,单击 properties 并查看“ location”字段。如果它以这样的两个反斜杠开始: \\epicserver\blah\,那么您正在使用一个网络驱动器。然后尝试重新打开 chm 文件,窗口不会崩溃。

  3. 最后的手段,如果你不能复制/移动文件离开网络驱动器。如果你必须打开它的位置,你正在使用一个较小版本的窗口,如 XP,Vista,ME 或其他,你将不得不 手动告诉 Windows 不要惊慌失措。Chm 文件。Http://www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/”rel = “ noReferrer”> HHReg (HTML 帮助注册实用程序) 实用程序自动完成此任务。基本上你下载 HHReg 实用程序,加载你的。Chm 文件,按 OK,它将创建必要的注册表项来告诉 Windows 不要阻止它。更多信息: http://www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/

Windows 8还是 Windows 10? —— > 升级到 Windows XP。

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

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

在特尔斐,它看起来是这样的:

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

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

附注: Delphi 的 DeleteFile ()也应该识别 fork。

开始

类型 regsvr32 hhctrl.ocx

你应该得到这样的成功信息:

“ hhctrl.ocx 中的 DllRegisterServer 成功”

现在再次打开 CHM 文件。

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

为登记册增加以下价值,这个问题就应该得到解决:

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

更多信息请点击: http://support.microsoft.com/kb/896054

“解除阻塞”文件修复问题。截图:

enter image description here

Win 8 x64:

只要将它移动到另一个文件夹或者重命名你的文件夹(在我的例子中: 我的文件夹是“ c #”)。 避免在文件夹名称上使用符号。用字母命名。

搞定。

我用 C + + Builder 在我的软件中编程修复了这个问题。

在分配 CHM 帮助文件 Application->HelpFile = HelpFileName之前,我检查它是否包含“ Zone”。标识符“流,当它这样做时,我只是删除它。

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


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

另一种方法是使用不同的第三方软件。 这个链接显示更多的第三方软件查看 chm 文件..。

我试过苏门答腊 PDF,它工作得很好。

显然存在不同级别的身份验证。我读过的大多数文章都告诉您将 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”键被要求在另一台电脑上工作,而不是我的测试电脑。它可能根本不是必需的,但是当我添加它时,它修复了问题。用户可能没有关闭原始文件或类似的东西。所以只是一个考虑。我建议尽量少尝试,并测试它,然后添加如果需要的话。一旦确认,就可以根据需要进行部署。祝你好运!

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

移动到本地文件夹是最快的解决方案,没有其他工作为我,尤其是因为我没有管理我的系统(不能编辑注册表等) ,这是一个典型的情况下,在一个工作环境。

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

不要复制到我的文件或其他任何地方,这些位置通常是在网络驱动器在办公室设置,不会工作。