Navicat 16/17 激活/无限试用方法(Linux 安全版)

无需破解,无需删除整个 dconf,保留所有数据库连接和 UI 设置
适用于 Navicat Premium / MySQL / PostgreSQL 等 AppImage 版本


⚠️ 网上流传的“危险方法”

再网上找到了 这篇博客 建议执行:

rm -rf ~/.config/navicat
rm -rf ~/.config/dconf/user

这是极其危险的操作!

  • ~/.config/dconf/user整个 GNOME 桌面的配置文件
  • 删除它可能会导致:主题重置、快捷键丢失、扩展失效、输入法异常……

✅ 正确做法:精准定位 + 最小化删除

第一步:确认 Navicat 的 dconf 路径

不要盲目删除整个 dconf,先检查它到底用了哪些路径:

dconf dump / | grep -i navicat

输出:

[com/premiumsoft/navicat-premium]

✅ 所以只需重置这个特定路径即可:

dconf reset -f /com/premiumsoft/navicat-premium/

🔍 dconf reset -f 的作用:只清除指定路径下的配置,不影响其他应用


第二步:找出最小需删除的文件

如果直接 rm -rf ~/.config/navicat,会丢失:

  • 所有数据库连接(保存在 Common/connections.json
  • 查询历史、ER 图布局等

通过反复实验,我发现只需删除以下两个文件就能重置试用:

rm ~/.config/navicat/Premium/preferences.json
rm ~/.config/navicat/Premium/preferences.json.lock  # ← 关键!漏掉这个导致第二次启动就过期

如果不删除第二个lock文件的话,可能出现:

  • 第一次启动:成功获得 14 天试用 ✅
  • 第二次启动:立即提示“试用已过期” ❌

必须一并删除。


最终重置命令(推荐手动使用)

dconf reset -f /com/premiumsoft/navicat-premium/
rm -f ~/.config/navicat/Premium/preferences.json
rm -f ~/.config/navicat/Premium/preferences.json.lock

执行后:

  • ✅ 试用期重置为 14 天
  • 所有数据库连接保留(因为没动 Common/ 目录)
  • ✅ 不影响 GNOME 桌面任何设置

进阶:自动保留“最近打开的文件”等 UI 设置

虽然重置成功了,但 preferences.json 里其实包含有用信息:

cat ~/.config/navicat/Premium/preferences.json | json_pp

格式化后发现结构:

{
  "014BF4EC24C114BEF46E1587042B3619": { /* ← 加密试用状态(不可迁移) */ },
  "Recents": { /* ← 最近打开的 SQL 文件(明文!) */ },
  "Continues": { /* ← 自动恢复的窗口布局(明文!) */ },
  "AutoSaves": { /* ← 自动保存内容(明文!) */ }
}

💡 结论
我们可以 保留新生成的加密块 + 注入旧的 UI 数据,实现:

  • 14 天全新试用
  • 最近文件、窗口布局全部回来!

全自动脚本(推荐使用)

脚本 1:智能合并版(保留 UI 设置)

#!/bin/bash

set -e

# === 配置 ===
PREF_DIR="$HOME/.config/navicat/Premium"
PREF_FILE="$PREF_DIR/preferences.json"
LOCK_FILE="$PREF_DIR/preferences.json.lock"
BACKUP_PREFIX="navicat-prefs-backup"
BACKUP_FILE="$HOME/${BACKUP_PREFIX}-$(date +%Y%m%d-%H%M%S).json"
MAX_WAIT=120  # 最多等待 120 秒

# === 检查依赖 ===
if ! command -v jq &> /dev/null; then
    echo "❌ 请先安装 jq: sudo apt install jq"
    exit 1
fi

# === 1. 备份当前配置(如果存在)===
if [ -f "$PREF_FILE" ]; then
    echo "📦 正在备份当前配置..."
    cp "$PREF_FILE" "$BACKUP_FILE"
    echo "   备份保存至: $BACKUP_FILE"
else
    echo "⚠️  当前无 preferences.json,跳过备份"
    BACKUP_FILE=""
fi

# === 2. 彻底重置试用状态(三连删!)===
echo "🧹 正在彻底重置 Navicat 试用状态..."

# 重置 dconf
dconf reset -f /com/premiumsoft/navicat-premium/ 2>/dev/null || true

# 删除主配置 + lock 文件
rm -f "$PREF_FILE"
rm -f "$LOCK_FILE"

echo "✅ 已清除:dconf + preferences.json + preferences.json.lock"

echo ""
echo "🚀 请按以下步骤操作:"
echo "   1. 启动 Navicat AppImage"
echo "   2. 等待软件完全加载(看到主界面)"
echo "   3. 直接关闭 Navicat"
echo ""
echo "⚠️ 注意:必须完成上述操作后再按回车!"
read -p "确认已完成?按回车继续... "

# === 3. 等待新配置生成 ===
echo ""
echo "⏳ 等待 Navicat 生成新配置(最多 ${MAX_WAIT} 秒)..."

count=0
while [ ! -f "$PREF_FILE" ] && [ $count -lt $MAX_WAIT ]; do
    sleep 1
    count=$((count + 1))
    printf "\r⏳ 已等待 %d 秒..." $count
done
printf "\n"

if [ ! -f "$PREF_FILE" ]; then
    echo ""
    echo "❌ 超时!未检测到新配置生成。"
    echo "   可能原因:"
    echo "     - 未启动 Navicat"
    echo "     - 启动后未完全加载就关闭"
    echo "     - 使用了不同版本的 Navicat(路径不同)"
    echo ""
    read -p "是否要重试?(y/N): " -r
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        echo ""
        echo "请现在启动并关闭 Navicat,然后按回车..."
        read -p "准备好了吗?按回车开始检测... "
        count=0
        while [ ! -f "$PREF_FILE" ] && [ $count -lt $MAX_WAIT ]; do
            sleep 1
            count=$((count + 1))
            printf "\r⏳ 重试中... 已等待 %d 秒" $count
        done
        printf "\n"
        if [ ! -f "$PREF_FILE" ]; then
            echo "❌ 仍然未检测到配置,退出。"
            exit 1
        fi
    else
        echo "退出。"
        exit 1
    fi
fi

echo "✅ 检测到新配置!"

# === 4. 合并 UI 设置(仅当有备份时)===
if [ -n "$BACKUP_FILE" ] && [ -f "$BACKUP_FILE" ]; then
    echo "🔄 正在合并 UI 设置(Recents/Continues/AutoSaves)..."

    TEMP_MERGED="/tmp/navicat-prefs-merged.json"

    jq --argjson old "$(cat "$BACKUP_FILE")" '
      .Recents = ($old.Recents // {})
      | .Continues = ($old.Continues // {})
      | .AutoSaves = ($old.AutoSaves // {})
    ' "$PREF_FILE" > "$TEMP_MERGED"

    if jq empty "$TEMP_MERGED" 2>/dev/null; then
        cp "$TEMP_MERGED" "$PREF_FILE"
        echo "✅ UI 设置已成功恢复!"
    else
        echo "❌ 合并失败:JSON 格式无效,跳过恢复"
    fi
else
    echo "ℹ️ 无旧备份,跳过 UI 设置恢复"
fi

echo ""
echo "🎉 全部完成!现在可以正常使用 Navicat(14天试用)"

脚本 2:极简重置版(不保留 UI 设置)

#!/bin/bash
# 文件名: navicat-simple-reset.sh

dconf reset -f /com/premiumsoft/navicat-premium/ 2>/dev/null
rm -f ~/.config/navicat/Premium/preferences.json
rm -f ~/.config/navicat/Premium/preferences.json.lock

echo "✅ 已重置试用期!"
echo "👉 请手动启动 Navicat"

使用方法

# 创建脚本
nano navicat-reset.sh

# 粘贴上面任一脚本内容,保存退出

# 添加执行权限
chmod +x navicat-reset.sh

# 运行
./navicat-reset.sh

按提示操作即可!


常见问题

Q:为什么不用注册机/破解补丁?
A:因为linux版本的没找到(😭

Q:会丢失数据库密码吗?
A:不会! 密码保存在 ~/.config/navicat/Common/connections.json,我们的操作完全不碰这个文件😎🤌。

Q:适用于 Navicat 17 吗?
A:是的!机制完全相同。


免责声明

本文仅用于技术研究与学习,请支持正版软件。
Navicat 是 PremiumSoft 公司的商业产品,试用期结束后,请购买授权以支持开发者。

一个敲代码的