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

Posted

技术标签:

【中文标题】在 Windows 桌面应用程序中实现帮助功能的最佳方法 - 限制应用知识库以授权访问【英文标题】:Best approach to implement Help feature in Windows Desktop Application - Restrict the App knowledge base to authorize access 【发布时间】:2020-12-12 16:49:52 【问题描述】:

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

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

    Microsoft Compiled HTML Help 是 Microsoft 专有的在线帮助格式
可以反编译(工具 7-Zip、Sumatra 等) 前身 Microsoft WinHelp / 后继 Microsoft 帮助 2 支持Win 10

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

    .hlp Microsoft WinHelp 是联机帮助文件的专有格式,可以通过 Microsoft 帮助浏览器 winhelp.exe 或 winhlp32.exe 显示。 - 将 WinHelp 文件反编译成其源文档:HPJ、CNT、RTF、BMP 和 SHG -WinHelp 文件在单独的窗口中打开(帮助作者可以控制帮助文件是在会话之间存储用户的设置还是始终以默认大小和位置打开。)
有标题,一行菜单(文件、编辑、书签、选项和帮助) 典型的按钮包括目录、索引、返回和打印,以及用于浏览文件的 > 按钮。帮助作者还可以创建自定义按钮以跳转到特定主题或执行其他操作。 - 支持结束 - Wine 的开源版本 winhlp32 也适用于 Windows 10。它是 WineVDM 的一部分。

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

    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 中使用的帮助引擎
Microsoft Help 2.x 文件具有“.hxs”扩展名 可以使用开源“convertlit”工具来反编译 hxs 文件。

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

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

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

【问题讨论】:

【参考方案1】:

短篇小说 - 如果您编译成 WinHelp (.hlp)、HTMLHelp (.chm)、Help2 (.hxs) 或帮助查看器文件 ( em>.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 帮助。

这些格式并未完全公开和记录。它们将被视为 Microsoft 内部。

一些注意事项:

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

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

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

编辑:

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

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

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

基于 Web 的帮助示例:

Sandcastle Help - Dummy sample FAR HTML - Web Help Python documentation

【讨论】:

感谢您的快速回复。您能否详细说明以下几点(如果可能,请举例说明): 基于 Web 的帮助:对基于 Web 的帮助(知识库)使用密码保护区域 另外,我们有没有“CHM to EXE Con​​verter 2.0”的免费或开源替代品? 我之前没有用过“CHM to EXE Con​​verter 2.0”,也不知道有什么开源应用程序有这样的功能。但是有试用版。 @Prit - 请查看What should I do when someone answers my question?

以上是关于在 Windows 桌面应用程序中实现帮助功能的最佳方法 - 限制应用知识库以授权访问的主要内容,如果未能解决你的问题,请参考以下文章

WinUI3如何在桌面应用中实现亚克力窗口效果?

Android开发中实现桌面小部件

是否可以在 Qt Quick 应用程序中实现 SystemTrayIcon 功能

在 iOS 应用程序中实现可达性(无 Internet 弹出窗口)的最简单方法是啥? [复制]

如何在 iPhone 应用中实现谷歌聊天

如何在UWP应用中实现Google登录?