chm 文件打不开或显示空白?解除锁定与解包转换方法
双击 .chm 文件却只看到一个空白页、左侧目录有内容右边全白、或提示“已阻止访问”——这是 Windows 对下载文件的安全拦截与 CHM 自身结构问题共同造成的。CHM(Compiled HTML Help)是微软 1998 年推出的帮助文档格式,至今仍被大量离线手册、SDK 文档、题库使用。本文给出打开、修复与安全判断方法。

一、CHM 是什么、靠什么打开
- 本质是被压缩打包的 HTML 站点 + 索引 + 目录树,扩展名
.chm; - Windows 打开它依赖组件
hh.exe(Help Hub),路径C:\Windows\hh.exe;关联方式:HH.exe -e %1; - 内部技术上是
ITStorage/ITS格式,因此需要itircl.dll / itss.dll等组件正常注册。
如果双击毫无反应,先手工验证组件是否可用:Win+R → hh.exe 能打开“HTML 帮助”程序界面,说明组件在;打不开则是系统组件被精简。
二、打开后空白/被阻止(最常见)
原因:网络下载的文件被标记为“来自 Internet”,HTML 帮助渲染器会拒绝执行其中的脚本与跳转。微软在 2016 年 KB3124157(以及后续累积更新)后收紧了这一点,官方文档说明的处置方式有三种:
- 解除单文件锁定(推荐):右键该 chm → 属性 → 常规页底部勾选“解除锁定 / Unblock” → 应用。命令行方式:
Unblock-File .\manual.chm
- 移到本地可信目录:把文件放到
C:\Help\这类非下载来源路径,注册表添加允许路径:HKLM:\SOFTWARE\Microsoft\HTML Help\ 新建字符串 BlockedRoots 之外,实际用 Paths 更常见 # 常用做法:新建 "HKCU:\SOFTWARE\Microsoft\HTML Help\Paths" 之类并不统一, # 微软建议的方式是下面的 "在本地磁盘非受限目录中打开"
更稳妥的做法是直接放到%WINDIR%\Help或自建目录后再打开; - 用其它引擎打开(最省心的绕过):
7-Zip可以直接把 chm 当压缩包打开,抽取其中的 HTML 图片,然后本地用浏览器看;或用 Ninja chm、Sumatra PDF(支持 chm,https://www.sumatrapdfreader.org/ )阅读,这两个都做了权限兼容。
三、其它故障表现
- 左侧目录正常,正文报 “无法找到该页”:CHM 内部
#topic跳转失效,或页面 ID 与目录不匹配——多为制作时用了错误的话题 ID。临时解法:用“索引”标签搜关键词、或用 7-Zip 解出 HTML 直看; - 中文乱码:CHM 内 HTML 未声明 charset,或制作时用了非 UTF-8。解出后用
chardet判断编码,再用iconv -f gbk -t utf-8转; - 提示“文件已损坏 / 不是一个有效的 Windows HELP 文件”:下载不完整(对比文件大小与哈希)或传输中被截断;CHM 没有可靠的修复工具,只能重新获取;
- Win11 上完全无法打开:部分精简版/长期未更新的镜像删了 help 组件;先跑
sfc /scannow,或用第三方阅读器。
四、把 CHM 转成更通用的格式
# 1) 解包成 HTML(7-Zip 直接支持) 7z x manual.chm -o./out2) 解出的 HTML 批量转 PDF(用 wkhtmltopdf 或 Chrome headless)
先按 toc.ncx/目录顺序整理文件名,再合并
chrome.exe --headless --print-to-pdf=out.pdf --no-sandbox “file:///D:/out/index.html”
3) 用 Calibre 把 chm 转 epub(适合在阅读器上看)
ebook-convert manual.chm manual.epub
4) Linux/macOS 有 chmx/chmsee 类工具,也有 libreoffice 插件方案
说明:7z x 解出的目录里通常有 _PressResourceFiles、#DECOMPRESSEDSCRIPTS、html 与图片、toc 目录表,顺序需要自己整理。
五、安全性:chm 常被用作恶意载体
CHM 里可以包含 HTML + 脚本(VBScript/JScript)+ 可执行附件,历史上是钓鱼/木马投递的高频格式,因为它“看起来像文档”。判断规则:
- 来源不明(邮件附件、网盘、聊天群传的“题库/教程”)不要直接双击;
- 先看内部文件:用 7-Zip 不解压地浏览,若出现
.exe/.dll/.bat/.vbs/.js/.hta/.scr这类文件,直接删除; - 用 VirusTotal 或本地杀软扫描后再决定是否阅读,必要时用上面“解出 HTML 看”的方式避开脚本执行;
- Windows 的“解除锁定”只是放开渲染限制,不代表该文件安全,两者别混淆。
六、常见问题 FAQ
问:为什么我的 chm 在自己电脑能看,同事打不开?
答:多半是他从网上下载的(被 Mark-of-the-Web 锁定)。让他按第二节的 Unblock 处理即可。
问:能自己生成 chm 吗?
答:可以。微软旧工具 HTML Help Workshop(.hhp 项目文件);现代可用 eBookMaker、Python 的 pychm(读为主)或走 chmcmd(Free Pascal 的 ChmLib,chmcmd -project xxx.rhp)。
问:能不能禁掉系统对 chm 的执行来防风险?
答:可以按策略禁用 HH.exe(AppLocker 规则针对 %WINDIR%\hh.exe),企业环境常用。
要点:打不开先想“被锁定”,用 Unblock-File 或属性解除;看内容可用 7-Zip 解包或 Sumatra/Ninja chm;来路不明的一律先看内部有没有 exe/vbs。
生产内容,同时打通搜索引擎(SEO)与AI搜索引擎(GEO)流量入口的软件! 点击进入365建站器 »
