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

     2023-04-09     156

关键词:

【中文标题】在 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?

如何通过 XCode 在 iOS 应用中实现相机功能

...时间】:2020-06-3022:02:58【问题描述】:我从零开始开发iOS应用程序,但我需要创建一个可以使用iPhone相机拍摄图像的应用程序。我找到了UIImagePickerController但我无法弄清楚如何正确实现它。如果有人可以帮助我,那就太好了。此... 查看详情

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

】在iOS应用程序中实现可达性(无Internet弹出窗口)的最简单方法是啥?[复制]【英文标题】:WhatisthesimplestwaytoimplementReachability(NoInternetpopup)intoaniOSApp?[duplicate]在iOS应用程序中实现可达性(无Internet弹出窗口)的最简单方法是什么... 查看详情

electron中实现大文件上传和断点续传功能(代码片段)

...tron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。从官网的描述我们可以简单... 查看详情

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

...供的示例代码也没有清楚地说明它,因为它有一个Mac桌面应用程序的示例项目。借助xmppframework中提供的示例项目(iphoneXmpp),我能够向所 查看详情

在 sqlalchemy 中实现窗口函数时需要帮助

】在sqlalchemy中实现窗口函数时需要帮助【英文标题】:Needhelpinimplementingawindowfunctioninsqlalchemy【发布时间】:2021-09-2401:01:56【问题描述】:我正在尝试实现这个窗口功能:它按portfolio_id分组。在每个组中,找到最新版本。返回每... 查看详情

如何在 React 中实现分页

...描述】:我是ReactJS的新手,正在其中创建一个简单的TODO应用程序。实际上,它是一个非常基本的应用程序,没有数据库连接,任务存储在一个数组中。我添加了编辑和删除功能,现在我想添加分页。如何实现它?任何帮助将不... 查看详情

如何在 UITableView 中实现搜索功能?

】如何在UITableView中实现搜索功能?【英文标题】:HowmakesearchfunctioninUITableView?【发布时间】:2011-10-0509:53:23【问题描述】:我在UIViewController里面有UITableView...现在我想添加一个搜索栏来搜索UITableView中的所有数据...我真的很困惑... 查看详情

如何在 Windows Store 应用程序中实现家长控制?

】如何在WindowsStore应用程序中实现家长控制?【英文标题】:HowtoimplementparentalcontrolinWindowsStoreapplication?【发布时间】:2014-12-2522:30:20【问题描述】:我正在将教育游戏移植到Windows应用商店。游戏从网站下载关卡。我不认为他们... 查看详情

如何在 MERN 应用中实现登录功能?

...口3000,后端端口5000)上开发一个(简单易用的)笔记Web应用程序。我在实现用户登录功能时遇到了麻烦。我将尝试在这里提炼问题。我的主要App.jsx组件有一个LoginScreen.jsx组件作为子组件,它 查看详情

如何在 phonegap 应用中实现“给我们评分”功能

...我的客户可以轻松地对我的应用进行评分和评论。问题是应用程序是使用电话间隙实现的。是否可以使用html5-phonegap来实现这个功能?谢谢 查看详情

如何在 ios 中实现条码扫描器功能?

...述】:我已经使用phone-gap在android中构建了条形码扫描仪应用程序,现在我也想在ios中实现相同的东西,我也想为这个ios应用程序使用相同的java脚本、css文件。给我建议如何开始我是iosdevelopment.sugge 查看详情

如何在 iOS 中实现用户挂起功能

...tureiniOS【发布时间】:2015-03-2603:49:00【问题描述】:在iOS应用程序中,当我检测到用户的不当行为(例如发布暴力内容)时,我不想暂停用户使用我的应用程序。实现此功能的基本思想是为每个应用程序安装创建并保存一个唯一... 查看详情

需要在我的应用中实现“通话结束”功能

...”按钮,当我的手机有任何来电时,我只是使用默认拨号应用程序收到它,然后我打开我的“DemoApp”,当我按下“结束通话”按钮,我只想结束来电。我已通过以下代码成功完成“结束通话”功能: 查看详情

如何在 iPhone 中实现自定义相机功能? [关闭]

...8-1605:07:13【问题描述】:我想开发一种功能,以便在iPhone应用程序中实现自定义相机功能,所以请给我任何链接或任何想法来开发此功能。提前致谢。【问题讨论】:您的问题尽可能地不清楚。在iphone中开发自定义相机功能。【... 查看详情

iPhone:如何在 iPhone 中实现崩溃报告功能?

...发布时间】:2011-08-0606:29:57【问题描述】:有没有办法在应用程序崩溃并且应用程序启动时保存崩溃日志显示邮件对话以发送带有该崩溃日志的邮件????所以请告诉我在iPhone中开发此功能的任何链接或任何想法...提前致谢【... 查看详情

如何使用 jabber net 在 c# Windows 应用程序中实现文件传输

】如何使用jabbernet在c#Windows应用程序中实现文件传输【英文标题】:HowtoimplementFiletransferinc#Windowsappusingjabbernet【发布时间】:2019-08-0611:08:04【问题描述】:我正在使用jabbernet和ejabberd开发一个聊天应用程序。我完成了与xmpp的一对... 查看详情

在 WP7 中实现回滚事务

...除之后我调用提交更改,在那个时候如果我做了一个墓碑应用程序退出。我如何处理这种情况我打算使用trycatch并且如果捕获到任何异常意味着我需要回滚更改。请任何人帮助我在wp7中实现相同的功能。【问题讨论】:【参考方 查看详情

如何在 Xamarin.forms 中实现面板功能

....forms【发布时间】:2016-08-0513:42:19【问题描述】:就像在Windows窗体中一样,我们可以在同一个窗体中添加多个面板,并根据某些条件显示和隐藏特定面板。Xamarin.Forms里面有没有可以这样使用的控件?这背后的主要原因是,我在... 查看详情