侧边栏壁纸
博主头像
Ivan Zhang

所谓更牛,就是换个罪受

  • 累计撰写 48 篇文章
  • 累计创建 54 个标签
  • 累计收到 6 条评论

目 录CONTENT

文章目录

macOS 自动重置 Navicat Premium 16/17 试用期

Ivan Zhang
2025-04-08 / 0 评论 / 0 点赞 / 425 阅读 / 3,718 字
温馨提示:
本文最后更新于 ,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
有什么问题或观点欢迎评论留言,或者 交流。
如果觉得文章对您有所帮助,可以给博主打赏鼓励一下。

以下是为 Mac 版 Navicat Premium 16/17 设计的 精准删除一级 Key 并重置试用期 的完整 Shell 脚本:


#!/bin/bash

# ---------- 终止 Navicat 进程 ----------
echo "终止 Navicat 进程..."
pkill -9 "Navicat Premium" || echo "Navicat 未运行"

# ---------- 清理应用支持目录 ----------
NAVICAT_SUPPORT_DIR=~/Library/Application\ Support/PremiumSoft\ CyberTech/Navicat\ CC/Navicat\ Premium
echo "删除应用支持目录隐藏文件: $NAVICAT_SUPPORT_DIR"
rm -rf "$NAVICAT_SUPPORT_DIR"/.* 2>/dev/null

# ---------- 处理偏好设置文件 ----------
PLIST_FILE=~/Library/Preferences/com.navicat.NavicatPremium.plist
echo "解析偏好设置文件: $PLIST_FILE"

# 提取所有一级 Key(匹配4空格缩进+32位哈希),并去除前导空格
# 此处感谢大佬 yhan219 指出 grep -a 参数避免跳过二进制检查,解决 intel 芯片无法匹配问题
KEYS_TO_DELETE=$(/usr/libexec/PlistBuddy -c "Print" "$PLIST_FILE" | grep -Eoa "^\s{4}[0-9A-F]{32}" | tr -d ' ')

if [[ -z "$KEYS_TO_DELETE" ]]; then
    echo "未找到需要删除的 Key"
else
    # 循环删除所有一级 Key
    while IFS= read -r key; do
        echo "删除 Key: $key"
        /usr/libexec/PlistBuddy -c "Delete :$key" "$PLIST_FILE" 2>/dev/null
    done <<< "$KEYS_TO_DELETE"
fi

# ---------- 重启 Navicat ----------
echo "启动 Navicat..."
open -a "Navicat Premium"

echo "试用期重置完成!"

脚本功能说明

  1. 终止进程

    • 强制关闭所有正在运行的 Navicat 进程,避免文件占用问题 。
  2. 清理隐藏文件

    • 删除 ~/Library/Application Support 目录下的隐藏文件(如 .xxxx),这些文件存储了试用期的加密标识 。
  3. 精准删除一级Key

    • 使用 grep -Eoa "^\s{4}[0-9A-F]{32}" 严格匹配 以4个空格开头 的32位哈希 Key(即 Plist 中的顶级 Key),避免误删嵌套 Key 。-a 强制搜索包含二进制数据的文件,兼容 intel 芯片 mac。
  4. 重启应用

    • 自动重新启动 Navicat,触发试用期重置逻辑 。

使用方法

  1. 将脚本保存为 reset_navicat.sh
  2. 赋予执行权限:
    chmod +x reset_navicat.sh
    
  3. 运行脚本:
    ./reset_navicat.sh
    

扩展:定时任务配置(可选)

参考 网页,可通过 launchctl 设置自动重置:

  1. 创建定时任务描述文件 reset.navicat.premium.trial.period.plist
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <!-- 1.此处定义的是定时任务的名称,之后可用于搜索或停止该任务,建议与文件名一致即可 -->
        <string>reset.navicat.premium.trial.period</string>
        <key>ProgramArguments</key>
        <array>
            <!-- 2.修改为你的 reset_navicat.sh 脚本的绝对路径 -->
            <string>/path/to/reset_navicat.sh</string>
        </array>
        <!-- 在加载该文件时就执行任务,如果不需要可以删掉或改为false,调试阶段建议打开,以便查看脚本执行结果 -->
        <key>RunAtLoad</key>
        <false/>
        <!-- 在指定时间执行任务 -->
        <key>StartCalendarInterval</key>
        <dict>
            <!-- 3.下面表示每周一中午12点执行任务,可以修改为你想要的时间段执行任务 -->
            <key>Weekday</key>    <!-- 0/7=周日, 1=周一...6=周六 -->
            <integer>1</integer>
            <key>Hour</key>
            <integer>12</integer>   <!-- 12点执行 -->
            <key>Minute</key>
            <integer>0</integer>
        </dict>
        <!-- 运行日志,请以实际为准,调试阶段建议打开,以便查看脚本执行结果 -->
        <key>StandardOutPath</key>
        <!-- 4.运行日志,修改为你的实际想要输出的日志路径 -->
        <string>/path/to/log/reset_navicat.log</string>
        <!-- 错误日志,请以实际为准,调试阶段建议打开,以便查看脚本执行结果 -->
        <key>StandardErrorPath</key>
        <!-- 5.错误日志,修改为你的实际想要输出的日志路径 -->
        <string>/path/to/log/reset_navicat_error.log</string>
    </dict>
    </plist>
    

    ⚠️注意: 如果配置了 StandardOutPathStandardErrorPath,建议创建指定目录,且目录需要当前用户有写权限,避免找不到目录或者无写权限导致自动执行失败。

    mkdir -p /path/to/log
    
  2. 配置与加载任务:
    # 将 reset.navicat.premium.trial.period.plist 复制到 ~/Library/LaunchAgents 文件夹中,当前用户登录后便会自动加载该定时任务
    cp reset.navicat.premium.trial.period.plist ~/Library/LaunchAgents/reset.navicat.premium.trial.period.plist
    # 加载定时任务,如果没有报错则任务就加载成功了,会按照计划执行重置脚本,如果上面开启了加载即执行任务和任务日志输出,此时可以去查看日志文件,获取脚本执行情况
    launchctl load -w ~/Library/LaunchAgents/reset.navicat.premium.trial.period.plist
    # 如果要调整 plist 文件或是停止任务,请执行以下命令后再进行调整
    launchctl unload -w ~/Library/LaunchAgents/reset.navicat.premium.trial.period.plist
    

注意事项

  • 兼容性:已验证适用于 Navicat 16/17 的 macOS 版本。
  • 安全性:脚本仅操作试用标识文件,不会影响数据库连接配置 。
  • 合法性:请遵守软件许可协议,推荐购买正版 。

如需 Windows 脚本,可参考搜索结果中的注册表清理方案(如删除 Registration17XCS 键值)。

参考项目

0

评论区