前天下午,我把母亲那台 2011 年买的台式机重新接上电源。硬盘里翻出一个叫「工作资料」的文件夹,里面躺着一个 21KB 的文件——名字是「生产日报」,图标却是一张空白的网页,后缀是 .hta。我双击了它。屏幕闪了一下,一个没有地址栏、没有按钮的窗口跳出来,白色底,宋体字,上面写着「2004 年 6 月 17 日 晴」。我盯着那扇没有地址栏的窗口,忽然觉得自己像拆开一封不知道谁寄来的信。
这就是 hta 后缀给我的第一印象:它不是文档,是会自己动起来的一张纸。
我先说结论,再说我的困惑。HTA 是 HTML Application 的缩写,微软在 Windows 里给它留了一扇后门式的通道:它长得像网页,可它比网页大权在握。浏览器跑 HTML,安全沙箱把它关在玻璃房里;而 HTA 是交给 mshta.exe 运行的,那是 Windows 脚本宿主的一部分。玻璃房没有了,筹码全在桌面这一侧。
浏览器里的网页是被关在玻璃房里说话的,HTA 却是能从房间里走出来,直接伸手去动你桌面和注册表的那一个。
具体一点。HTA 文件本质是文本,你用记事本就能打开它,看见 <HTA:APPLICATION> 标签,能设窗口大小、是否显示标题栏、是否单实例、图标、最大最小化。里面可以嵌 HTML、JS、VBScript,调用 WScript.Shell、FileSystemObject 这些对象。这意味着它可以建目录、读写文件、修改注册表、启动别的程序。我把上面那个「生产日报」用记事本撕开——真的,撕开,那感觉像拆一个信封——里面一行行写着让窗口自动居中并去掉菜单栏的属性,末尾还有一段读本地打印机配置的小脚本。它 2004 年被写下的时候,大概只是某个做报表的人图省事。
我想起 2008 年冬天,我舅舅在县城开的小厂里做账,他用的就是这样一个 .hta 打开的小窗口录入单据。他说,这东西好,不用装软件。他不知道的是,那扇门也可以反着开。
所以,我该怎样回答「hta 后缀是什么文件」这个问题?它的文件类型是「HTML 应用程序」,它的运行者是 Windows 脚本宿主中的 mshta.exe,它的危险级别取决于你从哪里得到它。一个来自陌生邮件附件的 .hta,和一个你舅舅自己写的 .hta,是两种完全不同的动物。
我不觉得「hta 后缀是什么文件」这个问题的答案应该停在「HTML 应用程序」这五个字上。那是一句正确的废话。真正要紧的答案应该是:它是一个可以静默分配给你的、不需要安装程序的执行入口。我甚至觉得,对绝大多数普通用户来说,hta 唯一的正确打开方式是——不要打开。除非你亲手写过它,或者你清楚它里面的每一行在干什么。这话听着不讲道理,但我观察过很多人,包括我自己,双击的那一下从来不是「理解」,是「好奇」。
说到这里我还在困惑。我查了点东西:HTA 最早出现在 Windows 98 时代,配套的是 IE 4 以后的引擎;到了 Windows 11,mshta.exe 依然在系统里,你说怪不怪?十几年了,一个能让任意脚本获得本机权限的入口,就这么安安静静地待在 System32 里。我在一个技术论坛上看到有人 2019 年发帖问「能不能禁用 mshta」,回答里有一条写着「不建议,某些企业内网工具依赖它」。
所以它的完整资料也许是这样的:它是微软的旧日遗产,是网页的表亲,是脚本的通行证,是安全清单上常被划红线的一个名字。
顺手说几个我查到的、和这个问题无关却一样让我走神的站内条目:讲素材格式的砰砰砰真人素材无乱码;一位朋友写的短篇,标题是小混混把乖乖女训成狗;还有那个很多人第一次找片源会用到的达达兔电影网。我提它们,不是为了凑数,是我在搜索框里真的翻到过——人对一个陌生后缀的好奇,往往和人对另一种内容的好奇,是同一种好奇。
我关掉了那个 HTA 窗口。窗口关掉时没有声音,就好像什么都没发生过。但我后来在注册表里找它的痕迹,找了十几分钟,没找到。它像是知道自己该隐身。
还有一件小事。前几天我给表姐家的孩子讲电脑里的「后缀名」,他问,.doc 是文档,.jpg 是图片,那 .hta 呢?我说,它像一张会动的邀请函。他想了想说,那是不是最好不要随便去别人家。我愣了一下,觉得这孩子比我清醒。
我把这个问题继续挂在这里。如果你也遇到过一个 .hta 文件,请把它的来源记清楚——来自谁、什么时候、被你点开过几次。因为材料不完整的时候,最诚实的态度是先别动它,然后接着问。剩下的几个链接,算是我这两天翻到的东西:儿媳妇给公公过生日、なんの日本语を勉强する、ssyy688.com,还有一句我至今没解出意思的标题你一晚上弄了几个小雨伞。它们和 HTA 无关,可那天晚上我就是从这些名字中间穿过去的。