首页 > 解决方案 > 在 Windows 桌面应用程序中实现帮助功能的最佳方法 - 限制应用知识库以授权访问

问题描述

在 Windows 桌面应用程序中实现帮助功能的最佳方法,以下是我遇到的选项列表:

参考:https ://en.wikipedia.org/wiki/Microsoft_Compiled_HTML_Help#cite_note-2

  1. Microsoft Compiled HTML Help是 Microsoft 专有的联机帮助格式

参考:https ://en.wikipedia.org/wiki/WinHelp

  1. .hlp Microsoft WinHelp是联机帮助文件的专有格式,可以通过 Microsoft 帮助浏览器 winhelp.exe 或 winhlp32.exe 显示。- 将 WinHelp 文件反编译成其源文档:HPJ、CNT、RTF、BMP 和 SHG -WinHelp 文件在单独的窗口中打开(帮助作者可以控制帮助文件是在会话之间存储用户的设置还是始终默认打开大小和位置。)

参考:https ://en.wikipedia.org/wiki/Microsoft_Help_2

  1. Microsoft_Help_2是联机帮助文件的专有格式,由 Microsoft 开发并于 2001 年首次发布,作为 Visual Studio .NET (2002) 和 MSDN Library 的帮助系统。Microsoft Help 2.x 是 Microsoft Visual Studio 2002/2003/2005/2008 和 Office 2007 和 Office 2010 中使用的帮助引擎

参考:https ://en.wikipedia.org/wiki/Microsoft_Help_Viewer

  1. Microsoft Help Viewer (HV)是 Microsoft 开发的脱机帮助系统(本地帮助),随 Visual Studio 2010 及其关联的 MSDN 库一起提供。

以上所有方法都有一个限制,即编译后的帮助文件可以被反编译并进一步重新分发,这是我想要限制的。 我想只允许授权用户访问知识库,并且授权用户也不应该能够进一步复制或反编译知识库并与未经授权的用户进一步共享。

标签: winformsdecompilerchmhelpfilewinhelp

解决方案


简短的故事 - 如果您编译成 WinHelp ( .hlp)、HTMLHelp ( .chm)、Help2 ( .hxs) 或帮助查看器文件 ( .mshc) ,您无法阻止反编译。

Winhelp 大约 30 岁,HTMLHelp 大约 23 岁!请注意,HTMLHelp(CHM 文件)的反编译器仍然是 Windows 10 操作系统的集成部分。

你知道微软自 WinHelp (.hlp) 和 HTML Help (.chm) 以来创建了其他帮助系统,但它们与各种系统相关联:

  • MS Help 2.0 for Visual Studio 2002/2003/2005/2008 & Office 帮助。
  • Windows Vista 操作系统/OEM 帮助的 AP 帮助(基于 MS 帮助 2)
  • MS Help Viewer 1.0 for Visual Studio 2010 帮助。
  • MS Help Viewer 2.0 for Visual Studio 2012 & Windows 8 OS/OEM 帮助。

这些格式没有完全披露和记录。他们被视为微软内部。

一些注意事项:

  • WinHelp (.hlp) 格式自 1990 年代初就已存在,并被 HTML Help 1.x (.chm) 取代。大约十年前,Microsoft 强烈建议您远离 WinHelp。
  • 除非集成到 Visual Studio 帮助中,否则仍建议您将 HTML HELP (.chm) 用于 Windows 应用程序帮助。
  • 然而,今天,越来越多地过渡到基于 Web 的帮助(例如,使用 Markdown 文本 => HTML)

根据您的要求,您可以尝试以下想法

  • 基于 Web 的帮助:对基于 Web 的帮助(知识库)使用密码保护区域
  • 使用带有密码保护的CHM to EXE Con​​verter 2.0加密和转换CHM到exe ,防止编辑、复制和打印。您只能将chm转换为exe而无需密码,您也可以为您的用户设置PC绑定密码。只有您可以为您的用户创建开放密码。轻松分发 CHM 文件并对其进行保护。

编辑:

您的第一个要求“我想只允许授权用户访问知识库”可以通过基于 Web 的帮助来解决。您经常会遇到无法免费访问所有部分的网站:为了能够查看网站某些部分的内容,您需要注册并获得登录名和密码才能进入这些受限区域。一个典型的例子是公司网站,其中会员区的访问权保留给销售人员和合作伙伴查看帮助文档和价目表,或者需要登录访问才能下载内容的门户。

如果您真的想为 Windows 上的软件创建结构化的应用程序帮助,包括上下文相关帮助,CHM 通常会更好。但即使这样也有学习曲线。

您的第二个要求“.. 并且授权用户也不应该能够进一步复制或反编译知识库。” 只能通过大量的努力才能解决。不知道 - 也许加密/解密到内存流并将其传递给文件流。

基于 Web 的帮助示例:


推荐阅读