【问题标题】:Windows HTML Help File not displaying possibly because of security可能由于安全原因,Windows HTML 帮助文件未显示
【发布时间】:2012-07-03 20:21:05
【问题描述】:

我想知道是否有人以前遇到过这个问题,希望有一个解决方案。我目前正在开发的程序是一个 MFC 应用程序,由于依赖问题,它以.exe(无安装屏蔽)的形式分发。我包含一个 HTML 帮助文件:.chm 扩展名,嵌入在资源中。当用户请求帮助文件时,它会从资源中提取为二进制文件并复制到文件系统中。进行了FindResourceLoadResourceLockResource 调用。提取文件后,我像这样调用ShellExecute

ShellExecute(m_hWnd, L"open", pathToFile, NULL, NULL, SW_SHOWDEFAULT);

HTML 帮助查看器启动时没有问题。但是,在某些计算机上无法查看文件中的页面。我看到“无法显示网页”消息。

我注意到两件事:

  1. 该错误仅在“您要运行此文件吗?”之后出现。当用户第一次尝试进入程序时会出现对话框。

  2. 如果 .exe 通过 USB 运行(而不是从电子邮件下载),则可以查看 HTML 帮助文件

有人遇到过这样的事情吗?有什么建议么?

编辑:

我正在使用ShellExecute(),因为HtmlHelp() 调用给出了相同的结果。

【问题讨论】:

  • .chm 文件存储在哪里?如果它在应用程序的文件夹中,恰好是“程序文件”,那么你就有麻烦了,因为它是一个受保护的文件夹。这解释了为什么从 USB 运行有效,因为它不在受保护的文件夹中。为了验证这是问题所在,如果您以管理员身份运行该应用程序是否解决了?
  • @eran:除非用户在此处解压缩 .zip,否则不会将任何内容放入程序文件文件夹中。当我在其他 PC 上进行测试时,情况并非如此。没有安装屏蔽。 .zip 文件仅包含.exe 以及与该程序相关的一些其他文件。 .chm 文件与.exe 文件存储在同一目录中。

标签: visual-studio-2008 mfc html-helper


【解决方案1】:

如果您检查 .chm 文件的属性(通过 Windows 资源管理器),是否显示:
“此文件来自另一台计算机,可能会被阻止以帮助保护这台计算机”。
这将显示在“属性”窗口中“常规”选项卡底部附近。

如果是这样,请单击取消阻止按钮。

http://blog.crowe.co.nz/archive/2007/04/13/719.aspx 了解更多信息。

【讨论】:

  • 这实际上可能是 HtmlHelp 无法显示的原因。但是,我想避免让遇到此问题的每个用户都必须执行解锁步骤。有些用户不会很精通,这就是帮助文件放在首位的原因:)
【解决方案2】:

如果您不使用 ShellExecute(),而是使用“正确”方式,通过 HtmlHelp() api 调用会发生什么?

您的 htmlhelp 文件中是否有活动内容(即 javascript)?

最好不要解压到 .exe 所在的同一个目录。例如,当用户从网络驱动器上运行程序时,你会得到同样的错误(从网络驱动器打开的 htmlhelp 文件是标记为“不受信任”)。

【讨论】:

  • 感谢您的意见。我使用 ShellExecute() 的原因是因为 HtmlHelp() API 调用给出了相同的结果。我应该把它包括在问题中。不,我在 HTMLHelp 文件中没有任何 javascript,它是纯 HTML 和 CSS。将文件提取到不同的目录:这确实是为了让用户在同一个目录中看到它。当来自网络驱动器的 DL 时文件被标记为“不受信任”的情况与我处理来自电子邮件的 DL 的情况相同(这将是分发此程序的主要方式)。
  • 帮助文件不是从 *.zip 中提取的,而是从资源中提取的,然后在程序启动时逐字节构建文件。但是,如果帮助文件被提取到不同的 DIR,这是否会以某种方式无法将文件标记为“不受信任”?
【解决方案3】:

我找到了解决办法。

Two security updates 导致了这个问题。以下链接概述了问题并为大多数非程序员提供了解决方案。我使用了支持页面中的示例 #2 以及 Registry Reference API 来解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    相关资源
    最近更新 更多