【发布时间】:2012-07-03 20:21:05
【问题描述】:
我想知道是否有人以前遇到过这个问题,希望有一个解决方案。我目前正在开发的程序是一个 MFC 应用程序,由于依赖问题,它以.exe(无安装屏蔽)的形式分发。我包含一个 HTML 帮助文件:.chm 扩展名,嵌入在资源中。当用户请求帮助文件时,它会从资源中提取为二进制文件并复制到文件系统中。进行了FindResource、LoadResource 和LockResource 调用。提取文件后,我像这样调用ShellExecute:
ShellExecute(m_hWnd, L"open", pathToFile, NULL, NULL, SW_SHOWDEFAULT);
HTML 帮助查看器启动时没有问题。但是,在某些计算机上无法查看文件中的页面。我看到“无法显示网页”消息。
我注意到两件事:
该错误仅在“您要运行此文件吗?”之后出现。当用户第一次尝试进入程序时会出现对话框。
如果 .exe 通过 USB 运行(而不是从电子邮件下载),则可以查看 HTML 帮助文件
有人遇到过这样的事情吗?有什么建议么?
编辑:
我正在使用ShellExecute(),因为HtmlHelp() 调用给出了相同的结果。
【问题讨论】:
-
.chm 文件存储在哪里?如果它在应用程序的文件夹中,恰好是“程序文件”,那么你就有麻烦了,因为它是一个受保护的文件夹。这解释了为什么从 USB 运行有效,因为它不在受保护的文件夹中。为了验证这是问题所在,如果您以管理员身份运行该应用程序是否解决了?
-
@eran:除非用户在此处解压缩 .zip,否则不会将任何内容放入程序文件文件夹中。当我在其他 PC 上进行测试时,情况并非如此。没有安装屏蔽。 .zip 文件仅包含
.exe以及与该程序相关的一些其他文件。.chm文件与.exe文件存储在同一目录中。
标签: visual-studio-2008 mfc html-helper