如何重置 Navicat 试用期:3 条命令跑通 navicat-key 注册表清理工具
如何重置 Navicat 试用期:3 条命令跑通 navicat-key 注册表清理工具
【免费下载链接】navicat-keynavicat-key项目地址: https://gitcode.com/gh_mirrors/na/navicat-key
Navicat 弹窗提示"试用期已结束",而你只是想继续连库跑查询。开源项目 navicat-key 替你自动清理注册表 (Registry) 里的试用记录,把 15 天试用期重置回来。照这篇文章操作,10 分钟内你能在 Windows 上跑通它,并确认删对了位置。
先看跑完是什么效果
命令执行完,屏幕会刷出一串以delete :开头的日志。第一行是主记录,后面每一行对应 CLSID (class identifier,类标识) 目录下的一处散落记录,数量随你机器的情况浮动:
delete : HKEY_CURRENT_USER\Software\PremiumSoft\Data delete : HKEY_CURRENT_USER\Software\Classes\CLSID\{05FA135A-5E1E-01B9-5855-34A51FA798F7}\Info delete : HKEY_CURRENT_USER\Software\Classes\CLSID\{41BDFDC1-F5E0-5BDD-8EEC-29DAD3C82569}\Info ...程序跑完自动退出。这时重新启动 Navicat,"试用期已结束"的提示消失,试用期重置为 15 天。
动手前,先看清适用边界
- 只支持 Windows。底层
reg.dll是 Windows 原生库,macOS 和 Linux 上跑不起来。 - 需要 JDK (Java Development Kit) 8 或更高版本,可用
java -version自查。 - 它能做:删除当前用户(HKEY_CURRENT_USER)下的 Navicat 试用记录,重置 15 天试用期。
- 它不解决:不发放授权、不解锁付费功能,试用再次到期后仍需再跑一次,或购买正式授权。
- 运行前必须关闭所有 Navicat 进程,作者 README 也把"关闭 Navicat"列为第 0 步。
确认 4 项环境准备
- 关掉所有 Navicat 窗口 → 任务管理器进程列表里找不到 navicat 进程。
- 已装 JDK 8 或更高 → 命令提示符执行
java -version,显示 1.8.0 及以上。 - 克隆好项目 → 项目目录里能看到
src和libs两个目录。 - (推荐)备份注册表 → 执行
reg export "HKEY_CURRENT_USER\Software\PremiumSoft" backup.reg后生成了 backup.reg 文件,出错可以还原。
3 步跑通核心流程
第 1 步:克隆仓库并编译
git clone https://gitcode.com/gh_mirrors/na/navicat-key cd navicat-key javac -cp "libs/jregistry-1.8.3.jar" src/com/returncode/navicat/Registery.java前两条命令把项目拉到本地,第三条对着 libs 里的 jregistry 依赖库编译主程序。
验证点:src/com/returncode/navicat/目录下生成了Registery.class文件。
第 2 步:运行清理命令
java -Djava.library.path="libs" -cp "src;libs/jregistry-1.8.3.jar" com.returncode.navicat.Registery这一条命令运行主程序,并告诉 Java 到哪里找原生库。
验证点:屏幕上开始刷出delete :日志。
第 3 步:重启 Navicat 验证
关闭命令窗口,重新打开 Navicat,同时用 regedit 导航到HKEY_CURRENT_USER\Software\PremiumSoft。
验证点:Data 子项已消失,Navicat 不再提示试用期结束。
看它到底是怎么工作的
先说现象:程序没碰 Navicat 安装目录里的任何文件,重启后 Navicat 却把你当"新用户"。原因是试用记录不写在安装目录,而写在 Windows 注册表里——一个系统级的配置库,存放各类软件的状态。
打个比方:注册表像小区物业的资料室,每户居民一份档案,记着"哪户住进来、免费试用用了几天"。Navicat 就像住户,首次打开时"物业"给了 15 天免租期并记进档案。navicat-key 不给你装修房子(安装文件),它只进资料室把那一页撕掉。物业再查档案时查无此人,只能把你当新住户。
具体撕哪两页?
| 类型 | 路径 |
|---|---|
| 主记录 | HKEY_CURRENT_USER\Software\PremiumSoft\Data |
| 散落记录 | HKEY_CURRENT_USER\Software\Classes\CLSID\{...}\Info各子项下 |
Java 靠什么改注册表?Java 本身没有这个能力,项目用 jregistry-1.8.3.jar,通过 JNI (Java Native Interface,Java 本地接口) 调用 Windows 系统 API,对应原生库就是 libs/ 目录下的reg.dll(32 位)和reg_x64.dll(64 位),这也是运行命令必须带-Djava.library.path的原因。
Registery.java 的主逻辑不到 50 行:拿到上面两个父键,对 Data 和各子项的 Info 调用deleteSubTree递归删除,每删一处先往屏幕打一行delete : 路径——这就是那串日志的来源。注意它只在子键真实存在时才打印并删除。
修不 work 的 4 种情况
问:运行报 "Access to the registry is not allowed"(SecurityException)。答:注册表权限不足。关掉命令提示符,右键"以管理员身份运行",重做第 2 步。验证:重跑后能看到delete :日志。
问:报java.lang.UnsatisfiedLinkError: no reg in java.library.path。答:Java 找不到本地库。用dir libs确认reg.dll和reg_x64.dll都在,并确认运行参数带了-Djava.library.path="libs"。
问:报Unsupported major.minor version 52.0。答:JDK 低于 8。升级后重跑java -version,确认数字是 1.8.0 以上。
问:跑了没有 delete 日志,试用期也没重置。答:分两种情况。试用期确实没重置,去任务管理器查有没有残留 navicat 进程,结束后再跑;如果 Data 键之前已经删过,没有日志属正常行为(源码只在键存在时打印),可开 regedit 核实。
轮到你了
5 分钟任务:打开src/com/returncode/navicat/下的Registery.java,把System.out.println("delete : " + ...)里的前缀改成你喜欢的中文(比如"已清理 : "),用第 1 步的 javac 命令重新编译,再运行一次。屏幕日志变成你的文案,说明这套流程你已经彻底掌握了。
【免费下载链接】navicat-keynavicat-key项目地址: https://gitcode.com/gh_mirrors/na/navicat-key
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
