So, you've got in trouble. Some or even all of your CHM files seem to have gotten corrupted. They show a "The page cannot be displayed" error in the left-hand pane of the CHM viewer. There are several possible reasons why your CHM help files are unreadable.
CHM files remain a standard for shipping offline help with Windows applications, but their age shows. The same compact, self‑contained format that made them popular also makes them vulnerable to changes in the operating system, security policies, and user environments. The errors you’re seeing rarely mean the file is truly broken; more often, it’s the viewer or the environment that’s refusing to cooperate. This article walks through both classic and modern causes, with practical fixes for end users, authors, and IT administrators.
The CHM viewer component is not properly registered on your PC
The system file <WINDOWS>\system32\hhctrl.ocx may get missing, corrupted, or unregistered.
Solution: Run "regsvr32 hhctrl.ocx" command from the command line to register the library in the system.
The CHM viewer writes temporary files to %TEMP% and %LOCALAPPDATA%\Microsoft\HTMLHelp. If these directories are protected by UAC, redirected by Group Policy, or have restricted permissions, the viewer may fail silently. Try running hh.exe as an administrator to test this theory. If the file opens, the issue is permission‑related. The permanent fix is to ensure the user has write access to these folders, or to configure the application to use a fixed cache location via a local policy.
Your CHM files are stored in the folder with '#' (hash) character in the path
Many C# developers discovered that their documentation and e-books in CHM format cannot be read because they were storing their CHM files in the directories like 'C:\E-books\C#\'
The hash character signifies an anchor in HTML so the CHM viewer fails to resolve the path properly and to retrieve the content.
Solution: Remove the '#' (hash) character from the directory name. Also avoid using '?', '&', and '+' characters in directory names.
Long paths, spaces, and UNC shares.
Even without special characters, a path that exceeds the classic 260‑character limit can confuse the CHM viewer. Windows 10/11 allow longer paths if enabled, but hh.exe may still expect short paths. Similarly, spaces in folder names are generally safe, but they can break scripts that invoke hh.exe without quotes. Most importantly, opening a CHM from a network share (UNC path) is unreliable: the viewer may time out or be blocked by the local security policy. Always copy the file to a local drive (e.g., C:\temp) before opening. For authors, avoid overly deep directory structures when compiling and distributing CHM files.
A security update for Windows XP® may block access to CHM files
Windows XP® security update blocks active content in CHM files to protect your system security. Additional information is available here.
Solution: Run Windows Explorer, right-click on the CHM file, and select Properties from the popup menu. Click on the Unblock button immediately below the Advanced button on the General page. Click Apply to show the content. Once the CHM file has been unblocked, the Unblock button disappears.
The “Mark of the Web” (Zone.Identifier) block in modern Windows
Since Windows 10, the system adds an alternate data stream called Zone.Identifier to files downloaded from the internet or opened from untrusted network shares. When the CHM viewer sees this mark, it restricts navigation and often leaves the left pane blank or shows “The page cannot be displayed.” This is not a file corruption issue—it’s a security feature designed to prevent malicious ActiveX code from running.
Solution: Right‑click the CHM file in Windows Explorer → Properties → General tab. If you see an “Unblock” button, click it and then click Apply. This removes the Zone.Identifier and the file will open normally. If you have multiple CHM files, you can unblock them in bulk using PowerShell: Get-ChildItem *.chm | Unblock-File.
The CHM file is in the restricted Internet zone
When a CHM file that you are trying to access is stored remotely, e.g. on the network drive or on a remote server, you may also get in trouble. If the associated security zone is restricted, then CHM files won't be displayed as well.
Solution: Modify the ItssRestrictions registry entry to enable a specific security zone.
Follow these steps:
- Run 'regedit' command from the command line.
-
Locate and then click the following subkey:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions
Note: If this registry subkey does not exist, then create it. - Right-click the ItssRestrictions subkey, point to New, and then click DWORD Value.
- Type MaxAllowedZone, and then press ENTER.
- Right-click the MaxAllowedZone value, and then click Modify.
-
In the Value data box, type a number from 0 and 4, and then click OK.
- The values settings are
- 0 = My Computer
- 1 = Local Intranet Zone
- 2 = Trusted sites Zone
- 3 = Internet Zone
- 4 = Restricted Sites Zone
For most CHM files, the value of 1 should be enough to allow use without opening up access fr om/to remote CHM files in email/internet locations.
- Quit Registry Editor.
Warning Enable only those security zones that you trust. Do not enable security zones about which you are not sure.
For system administrators: applying the zone policy via Group Policy
Instead of manually editing the registry on each workstation, you can deploy the same MaxAllowedZone setting through Group Policy. Create a Group Policy Object (GPO) and set the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions\MaxAllowedZone to 1 (Local Intranet Zone). This allows CHM files from trusted network shares to open without security warnings, while still blocking files from the Internet and Restricted zones. Apply the GPO to the appropriate organizational units and reboot the workstations or run gpupdate /force.
Advanced diagnostics: when the usual fixes don’t work
If none of the above fixes help, it’s time to look under the hood. Here are two tools that can pinpoint the exact cause:
- Process Monitor (ProcMon) — filter by
hh.exeand look forACCESS DENIEDevents. This often reveals which file, registry key, or folder the viewer is trying to access and failing. - Event Viewer — check Windows Logs → Application for errors with source
HtmlHelp. Error codes like0x80004005(E_FAIL) or0x80070002(file not found) give direct hints.
You can also test the CHM file itself by opening it in Dr.Explain’s decompiler. If Dr.Explain can read and display the content, then the file is intact and the problem is definitely with your system viewer or environment.
When it’s time to move beyond CHM
Let’s be realistic: CHM is a legacy format. While it still works for many desktop apps, the security friction and maintenance overhead are growing. Here’s a quick comparison with modern alternatives:
| Format | Pros | Cons |
|---|---|---|
| CHM | Single file, offline, searchable, compact. | Security blocks, legacy ActiveX, no mobile support. |
| Web Help (HTML) | Cross‑platform, responsive, SEO‑friendly, embeddable. | Requires hosting or distribution as folder. |
| Universal, printable, stable. | Not searchable by default, large file size. | |
| Online Knowledge Base | Always up‑to‑date, analytics, user feedback. | Needs internet, ongoing maintenance. |
Cost of ownership (TCO) perspective.
In corporate environments, the support cost of CHM can be significant. Each security block, network path error, or re‑compile after a product update consumes support time. Many teams find that migrating to Web Help pays off within six months through reduced support tickets. Dr.Explain lets you generate Web Help, PDF, and CHM from the same source project, so you can phase out CHM gradually while keeping legacy users happy.
The pragmatic path forward.
CHM isn’t dead, but the cost of keeping it alive is rising. For legacy projects, the fixes above will resolve most issues. For new projects, consider starting with Web Help or a knowledge base—you’ll avoid the security friction entirely. If you’re already using Dr.Explain, you can keep your existing CHM for older customers and generate modern outputs for new releases, all from the same source. Gradually, you can retire CHM without breaking your installed base.
Dennis Crane, the author of the Dr. Explain software — the best software to create CHM help files, user guides and online manuals. Dennis specializes in help authoring software development. He is online at http://www.drexplain.com
Article Source: http://www.drexplain.com
You are permitted to reprint this text as long as it includes copyright notice and link to our web site.