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

Eri*_*ski 83 windows chm

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

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

Navigation to the webpage was canceled.  
What you can try: 
Retype the address.  
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这里发生了什么?

Eri*_*ski 166

摘要

从网络驱动器(或UNC路径)打开时,Microsoft安全更新896358和840315阻止显示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帮助注册实用程序)实用程序自动执行此任务. 基本上你下载HHReg实用程序,加载.chm文件,按OK,它将创建必要的注册表项,告诉Windows不要阻止它.欲了解更多信息:http: //www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/

Windows 8或10? - >升级到Windows XP.

  • 我在WinXP SP3或WinVista Home Premium上看不到"取消阻止"按钮 (3认同)
  • 在我引用的KB文章中,所提出的解决方案都没有与4种可能的解决方案相匹 将'MaxAllowedZone'设置为'1'可以解决我的问题 (2认同)

col*_*mik 42

"解锁"文件可以解决问题.截图:

在此输入图像描述


Mar*_*ort 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;
Run Code Online (Sandbox Code Playgroud)

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

Ps Delphi的DeleteFile()也应该识别分叉.


小智 11

赢8 x64:

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

完成.


Get*_*ree 6

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

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

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000001
Run Code Online (Sandbox Code Playgroud)

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