sublime text 无真正license过期机制,st2的“expired”提示源于内置构建时间戳硬编码限制,唯一解法是升级至st4;st4“invalid license”多因license文件损坏、hosts屏蔽域名、密钥含不可见字符或公钥缓存未清除所致。

Sublime Text 本身没有“License过期”这个机制——你看到的 This build of Sublime Text 2 has expired 或反复弹出“请购买”的提示,基本都是版本废弃、文件残留或校验干扰导致的假性过期,不是密钥真失效了。
为什么 Sublime Text 2 会报 “This build of Sublime Text 2 has expired”
Sublime Text 2 是一个已停止维护的旧版本(最后更新在 2013 年),其内置构建号有硬编码的截止时间。一旦系统时间超过该构建允许的范围,就会强制触发过期提示,且无法通过输入密钥绕过。
- 这不是授权验证失败,而是二进制层面的版本自毁逻辑
-
sublime_text.exe(Windows)或Sublime Text(macOS)主程序本身已包含过期检查,重装 License 文件无效 - 唯一可靠解法是升级到 Sublime Text 4(当前最新稳定版),它采用离线签名校验,不再依赖构建时间戳
- 若必须保留 ST2 配置,可直接下载 ST4 安装包,安装时选择原路径覆盖——
Package Control、用户配置、插件目录均不受影响
Sublime Text 4 提示“Invalid license”或“非法授权”的真实原因
ST4 的授权验证是离线进行的,但对密钥格式、系统环境极其敏感。报错几乎从不告诉你哪错了,只笼统显示“非法”,实际多由以下四类问题引发:
- 本地残留了损坏的
License.sublime_license文件(路径见下文),哪怕内容只是少了一个换行,也会静默拒绝新密钥 -
hosts文件中屏蔽了sublimehq.com或license.sublimehq.com,导致 ST4 启动时无法加载公钥用于离线验签(新版已依赖此机制) - 从邮件复制密钥时混入了零宽空格(ZWSP)、全角破折号(—)、自动换行符,或手动删掉了
-----BEGIN LICENSE-----前后的空行 - 粘贴进
Help → Enter License对话框前,没在纯文本编辑器(如记事本、VS Code)里确认密钥是否完整、无渲染污染
对应路径:
Windows:%APPDATA%\Sublime Text 4\Local\License.sublime_license
macOS:~/Library/Application Support/Sublime Text 4/Local/License.sublime_license
Linux:~/.config/sublime-text-4/Local/License.sublime_license
如何安全地重置并重新激活 Sublime Text 4
关键不是“输对密钥”,而是清掉所有干扰验证的中间状态。操作顺序不能错:
- 完全退出 Sublime Text:右键任务栏图标选“Exit”,macOS 在 Dock 右键选“Quit”,确保后台进程
subl或sublime_text已终止 - 删除
License.sublime_license文件(不是改名,是彻底删除) - 检查并清理
hosts文件:删掉所有含sublimetext.com、sublimehq.com、license.的行;Windows 执行ipconfig /flushdns,macOS 执行sudo dscacheutil -flushcache - 把官网邮件里的密钥全文复制,先粘贴到记事本(Notepad)或 VS Code,打开“显示空白字符”功能,确认每行末尾无异常符号,
-全是半角 ASCII 减号(U+002D) - 重启 Sublime Text,再执行
Help → Enter License,整段粘贴(含首尾分隔线和空行)
真正容易被忽略的是:ST4 的验签过程会在首次启动时预加载公钥,如果此时 hosts 拦截了域名,它会缓存一个空签名结果,后续即使你删了 hosts 规则、也删了 license 文件,不彻底重启软件,这个缓存仍生效。所以“退出→删文件→清 DNS→重启”这四步缺一不可。











