0

The best approach to implement Help feature in Windows Desktop Application, below are the list of the options I have come across:

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

  1. Microsoft Compiled HTML Help is a Microsoft proprietary online help format
  • Can be Decompiled(Tools 7-Zip,Sumatra etc)
  • Predecessor Microsoft WinHelp / Successor Microsoft Help 2
  • Support Win 10

Ref: https://en.wikipedia.org/wiki/WinHelp

  1. .hlp Microsoft WinHelp is a proprietary format for online help files that can be displayed by the Microsoft Help browser winhelp.exe or winhlp32.exe. -decompile a WinHelp file into its source documents: HPJ, CNT, RTF, BMP, and SHG -WinHelp file opens in a separate window(The Help author can control whether the Help file stores the user's settings between sessions or always opens in the default size and position.)
  • HAs Title, a row of Menu(File, Edit, Bookmark, Options, and Help) Typical buttons include Contents, Index, Back, and Print, along with << and >> buttons to browse through the file. Help authors can also create custom buttons to jump to specific topics or perform other actions. -End of support - The open-source version of winhlp32 from Wine also works on Windows 10. It is included as part of WineVDM.

Ref: https://en.wikipedia.org/wiki/Microsoft_Help_2

  1. Microsoft_Help_2 is a proprietary format for online help files, developed by Microsoft and first released in 2001 as a help system for Visual Studio .NET (2002) and MSDN Library. Microsoft Help 2.x is the help engine used in Microsoft Visual Studio 2002/2003/2005/2008 and Office 2007 and Office 2010
  • Microsoft Help 2.x file has a ".hxs" extension
  • An open-source "convertlit" tool can be used to decompile the hxs file.

Ref: https://en.wikipedia.org/wiki/Microsoft_Help_Viewer

  1. Microsoft Help Viewer (HV) is the offline help system (local help) developed by Microsoft that ships with Visual Studio 2010 and its associated MSDN Library.

All the above approaches have the limitation that the compiled Help file can be decompiled and further redistributed which I want to restrict. I want to allow access to the Knowledge-base to an only authorized users, and authorized users should also not be able to further copy or decompile the knowledge base and share it further with unauthorized users.

Prit
  • 11
  • 2

1 Answers1

0

The short story - you cannot prevent decompiling, if you compile into WinHelp (.hlp), HTMLHelp (.chm), Help2 (.hxs) or Help Viewer files (.mshc).

Winhelp is about 30 years old and HTMLHelp about 23 years old! Please note, the decompiler for HTMLHelp (CHM files) is still an integrated part of the Windows 10 operating system.

You know Microsoft have created other help systems since WinHelp (.hlp) and HTML Help (.chm) but they are tied to various systems:

  • MS Help 2.0 for Visual Studio 2002/2003/2005/2008 & Office help.
  • AP Help for Windows Vista OS/OEM help (based on MS Help 2)
  • MS Help Viewer 1.0 for Visual Studio 2010 help.
  • MS Help Viewer 2.0 for Visual Studio 2012 & Windows 8 OS/OEM help.

These formats are not fully disclosed and documented. They are to be regarded as Microsoft internal.

Some notes:

  • The WinHelp (.hlp) format has been around since the very early 1990s and is superseded by HTML Help 1.x (.chm). Microsoft strongly advised you move away from WinHelp about ten years ago.
  • You are still well advised to use HTML HELP (.chm) for Windows application help unless integrating into Visual Studio help.
  • Today, however, there is an increasing transition to web-based help (e.g. using Markdown text => HTML)

Depending on your requirements you could experiment with the following ideas:

  • Web-based help: Use a password protected area for web-based help (knowledge base)
  • Encrypt and convert CHM to exe by using CHM to EXE Converter 2.0 with password protected, prevent from editing, copying and printing. You can only convert chm to exe without password, and you can also set a password with PC-binding to your users. Only you can create open password for your users. Easily distribute CHM files and protect it.

EDIT:

Your first requirement "I want to allow access to the Knowledge-base to an only authorized users" can be solved by a web-based help. You often come across websites where you don't have free access to all the sections: to be able to view the contents in certain parts of the website you need to register and obtain a login and password to enter these restricted areas. A classic example is a company site, where access to the Members' Area is reserved for salespeople and partners to view help documents and price lists, or portals that require login access to contents that can be downloaded.

If you really want to create a structured application help for a software on Windows, including context-sensitive help, CHM is usually better. But even that has a learning curve.

Your second requirement ".. and authorized users should also not be able to further copy or decompile the knowledge base." can only be solved with a lot of effort. No idea - maybe encrypt/decrypt to memory stream and pass it to file stream.

Samples for Web-based help:

help-info.de
  • 6,695
  • 16
  • 39
  • 41
  • Thanks for your quick response. Can you please elaborate more(with example if possible) on the below point: Web-based help: Use a password protected area for web-based help (knowledge base) – Prit Aug 25 '20 at 15:20
  • Also, do we have any free or open-source alternative to "CHM to EXE Converter 2.0"? – Prit Aug 25 '20 at 17:14
  • I have not used "CHM to EXE Converter 2.0" before and I don't know of any open source application with such functions. But there is a trial version. – help-info.de Aug 25 '20 at 18:12