.exe 文件是什么 —— 又该怎么打开?
作者 Andrew Nakas · 发布于 2026 年 9 月 22 日 · 约 8 分钟阅读
大多数人遇到这个问题的方式都一样:不知什么东西下载了一个以 .exe 结尾的文件,双击之后什么有用的事都没发生。也许你在 Mac 上。也许你在一台不让你装任何东西的公司笔记本上。也许它确实是一台 Windows 电脑,而它仍然拒绝启动。
这篇文章讲清楚这个文件到底是什么、在各个平台上怎么打开、怎么在不运行的前提下看清它内部,以及大多数指南跳过的那一部分——什么时候你根本就不该打开它。
.exe 到底是什么
.exe 是一个程序,不是一份文档。打开它不会显示任何内容;它是在告诉你的操作系统开始执行里面的机器码。这篇文章之所以比「双击一下」复杂得多,原因全在这里。
严格来说它是一个 PE 文件——Portable Executable,微软从 Windows NT 起使用的格式。一个 PE 文件内部包含:
- 开头一小段 DOS stub,是 1980 年代留下来的。老
.exe在 DOS 下运行时会打印「This program cannot be run in DOS mode」,就是因为它。 - 一个 PE 头,说明这些代码针对哪种 CPU(32 位 x86、64 位 x64、ARM)、期待哪个版本的 Windows,以及各部分在内存里的位置。
- 若干节(section),装着真正的机器码、固定数据,以及各种资源——图标、对话框布局、内嵌文本。
- 一张导入表,列出它需要的 Windows 库,比如
kernel32.dll或user32.dll。
正是这张导入表,让 .exe 很少能自给自足。它默认周围存在一个 Windows。把同一个文件交给 macOS 或 Linux,那里没人听得懂它说的话——文件本身没问题,只是听众不对。
另外还有两种东西用着同样的扩展名,行为却不一样:安装程序(一个小程序,唯一的任务是把真正的程序铺到你硬盘上)和自解压压缩包(一个 zip,前面焊了一个解压器)。这两样后面都还会用到。
在 Windows 上打开
双击。这真的就是全部步骤,而如果它管用,你也不会在读这篇文章了。当它不管用时,几乎总是下面几种情况之一:
- SmartScreen 拦住了。会弹出一个蓝色的「Windows 已保护你的电脑」。如果你确定来源,点「更多信息」→「仍要运行」。如果你并不确定,停下来——看下面那一节关于安全的内容。
- 它需要管理员权限。右键 →「以管理员身份运行」。安装程序通常需要。
- 它是 16 位的。Windows 3.x 年代的东西在 64 位 Windows 上根本启动不了;那个子系统被移除了。参见运行 Windows 3.x 的 16 位软件。
- 缺少某个 DLL。错误信息点名某个
.dll,说明程序期待一个你没有的库或运行时。通常这个文件需要待在它原来的文件夹里,和它的同伴们一起。 - 它就是老。为什么老程序在 Windows 11 上跑不起来讲了兼容模式的各种选项。
在 Mac 上打开
macOS 无法原生运行 .exe,而且从来就不能——Apple Silicon 上的 CPU 约定不同,而底下的操作系统本来就完全是另一套。改文件名没有任何用。老老实实排个序,你现实中的选择是:
- 在浏览器标签页里运行。什么都不用装,在 Intel 和 Apple Silicon 上表现一样。本站的加载器做的就是这件事——一份编译成 WebAssembly 的 Wine,加上一个 x86 模拟器,在标签页里本地运行。你的文件不会被上传到任何地方。限制是真实的,也值得说清楚:它针对的是 1995 到 2008 年左右的经典 32 位 Win32 软件,速度约为原生的 10–40%。一个上古小工具或一个老游戏,可以。现代的 64 位应用,不行。
- 装 Wine 或 CrossOver。能力更强,配置也麻烦得多。Wine 是免费的;CrossOver 是商业软件,手把手的程度更好。
- 虚拟机。Parallels 或 VMware,配一份真正的 Windows 授权。这是兼容性最好的答案,也是最贵的——无论是钱还是磁盘空间。
- Boot Camp。只限 Intel 版 Mac。在 Apple Silicon 上已经没有了。
如果目标是「把这个老程序打开一次」,浏览器这条路通常是分寸刚好的那个。如果目标是「在这台 Mac 上经常运行 Windows 软件」,你真正需要的是虚拟机。
在 Chromebook 上
和 macOS 的处境一样,还多一层麻烦:学校和公司统一管理的 Chromebook 经常禁止安装任何东西,包括 Linux 容器。不需要安装的浏览器路线往往是唯一没被封掉的,而且在 ARM 架构的 Chromebook 上也能用,因为 CPU 本来就是模拟出来的。这一点我们单独写过一篇——在 Chromebook 上运行 Windows 软件的四种办法。
在 Linux 上
用发行版的包管理器装上 Wine,然后 wine 程序.exe。除了 Windows 自己,Linux 是原生支持最好的:Wine 已经成熟,而在游戏方面 Valve 的 Proton 就建立在它之上。如果你不想装任何东西,浏览器这条路在这里同样管用。
在 Android 和 iOS 上
说实话:基本上做不到,而那些暗示可以的指南只是在浪费你的时间。iOS 上没有任何受支持的方式来运行 Windows 软件。Android 上确实有能启动整套 Windows 环境的模拟器,但又慢又难伺候。浏览器标签页在这两个系统上都能打开体积不大的经典程序,这个门槛确实很低——够你看一眼老游戏,不够用来干正事。
如果你只想看看里面有什么
很多时候真正的目标根本不是运行这个程序。你想要的是里面的某一个文件——一份文档、一张图、一个驱动、一份来自早已装不上的软件的数据文件。要做到这件事,你不需要执行任何东西。
- 先试试压缩工具。很多安装程序和全部自解压压缩包,用 7-Zip 都能像普通 zip 一样直接打开。右键 →「打开压缩包」。你也可以在浏览器里用这里的解压工具。
- 安装程序有自己的拆包工具。
innoextract对付 Inno Setup,cabextract对付基于 CAB 的,msiexec /a可以对.msi做一次管理式解包。完整步骤:怎么从老安装包里提取文件。 - 如果要检查可执行文件本身——它导入了什么、带着哪些资源、是 32 位还是 64 位——你要的是一个 PE 查看器,而不是一个「打开」它的程序。这能在一行代码都不执行的情况下回答「这到底是个什么东西」。
这条路同时也是安全的那条。读一个文件,和执行它,完全不是一回事。
打开之前:它安全吗?
一个 .exe,你的用户账户能做什么,它就能做什么。大多数指南把这一点埋在角落里;在这里它应该是声音最大的一段。
- 它是从哪来的?厂商自己的网站,和邮件附件、下载站、聊天里的一个链接,完全是两回事。如果你说不出来源,就别运行。
- 这个文件名是不是被精心设计过?
发票.pdf.exe不是 PDF。Windows 默认隐藏已知扩展名,而这个骗术靠的正是这一点。 - 扫一遍。在运行任何你拿不准的东西之前,先传到 VirusTotal,让几十个引擎一起查。
- 别信所谓「已修复」的破解补丁或注册机。这一类东西是互联网上最稳定的恶意软件投递渠道。
- 只需要里面的文件时,优先解压而不是执行,用上面那些工具。
浏览器沙箱能解决其中一部分问题,但不是全部:在标签页里运行的程序拿不到你真正的文件系统,所以它没法加密你的文档。它是一道真实的隔离边界,但不是一张「可以运行你毫无理由信任的东西」的许可证。
快速解答
- 能把 .exe 转换成别的格式吗?不能。宣传这种功能的转换器,要么其实是在解压一个压缩包,要么就是什么都没卖给你。里面的代码针对的是特定的 CPU 和操作系统。
- 为什么它显示「This program cannot be run in DOS mode」?你看到的是 DOS stub。这说明一个 Windows 可执行文件被拿到了不是 Windows 的地方运行。
- 双击之后什么都没发生。常常是一个控制台程序打开、输出、然后立刻退出了。打开一个终端,从那里运行它,窗口就会留着。
- 没有 Windows 能打开 .exe 吗?能——在 Mac 或 Linux 上用 Wine、用虚拟机,或者对体积较小的经典程序用一个浏览器标签页。
一句话版本
.exe 是一个 Windows 程序,所以「打开」它就等于运行它——这就是为什么在 Windows 上很容易,在别的地方都很别扭。如果你需要用它,按平台和频率来选:一个老程序偶尔打开,用浏览器标签页;经常要用,装 Wine;任何现代软件,上虚拟机。如果你只是要从里面取出什么东西,用压缩工具,根本别执行它。无论走哪条路,先弄清楚这个文件是从哪来的。
如果你宁愿先看清楚再动手,EXE 查看器能把这些都从文件里读给你看——文件头、依赖库、图标、签名——全在浏览器里完成,一行都不执行。而如果你想现在就试试免安装的那条路,加载器在这里:拖一个 .exe 进去,它就在标签页里、在你自己的机器上跑起来。什么能跑、什么不能跑,兼容性指南里说得很直白。