Navicat计划任务未执行,首要确认Task Scheduler服务是否正在运行,并勾选“不管用户是否登录都要运行”,使用navicatcmd.exe替代navicat.exe,且“起始于”字段须填其所在绝对路径,参数中profile名与task名须严格匹配。
确认Task Scheduler服务是否正在运行
navicat 16自身不带后台守护进程,它的计划任务完全依赖 windows 的 task scheduler 服务唤醒并执行。如果任务“没动静”,第一件事不是翻 navicat 设置,而是检查这个系统服务有没有真正在跑。
打开 services.msc,找到 Task Scheduler,状态必须是「正在运行」;启动类型建议设为「自动(延迟启动)」。若显示“已停止”或“手动”,哪怕 Navicat 里任务配置得再完美,也压根不会触发。
常见错误现象:0x41301(任务已注册但未启动)、事件查看器中查不到任何 Task Scheduler 相关日志、手动右键运行任务也无响应——基本都指向该服务离线。
勾选“不管用户是否登录都要运行”并正确填入账户凭据
这是最常被忽略的权限开关。默认新建的任务勾选的是「只在用户登录时运行」,一旦远程桌面断开、锁屏、或使用 services.msc 启动无界面会话,任务就静默跳过,连失败日志都不留。
操作路径:任务计划程序 → 找到你的 Navicat 任务 → 右键「属性」→ 「常规」页 → 勾选:
- 不管用户是否登录都要运行
- 不保存密码(勾选后下方会出现「更改用户或组…」按钮)
- 点击该按钮,填入当前 Windows 账户全名(如 DESKTOP-ABC\user),再重新输入密码
注意:不要用 Microsoft 账户登录 Windows 来配任务,凭据链容易断裂;本地账户更稳。若仍报 0x80070005(访问被拒绝),说明账户对 Navicat 安装目录或备份路径缺少权限,需另行补授权。
起始于(可选)字段必须填 navicatcmd.exe 所在目录
Navicat 16 的计划任务若调用 navicat.exe,会在无桌面会话下卡死(强制初始化 GUI 导致静默退出)。必须改用专为命令行设计的 navicatcmd.exe,且 Windows 计划任务不会自动继承 PATH 或当前工作目录。
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
实操要点:
- 「操作」→ 「起始于(可选)」字段必须填写完整路径,例如:C:\Program Files\PremiumSoft\Navicat Premium 16
- 「程序或脚本」字段用绝对路径调用:"C:\Program Files\PremiumSoft\Navicat Premium 16\navicatcmd.exe"
- 参数示例:--profile="MyOracleDB" --task="DailyBackup"(注意 profile 名不是连接名,而是连接属性中「常规」页的 Profile Name)
漏填「起始于」会导致 cd 失败、相对路径失效、找不到配置文件,最终任务返回 0x1 或直接退出。
验证 profile 名和 task 名是否拼写一致且真实存在
Navicat 命令行对 --profile 和 --task 参数不做存在性校验。输错就静默跳过,日志里既不报错也不执行,极易误判为“系统没调度”。
排查方式:
- 打开 Navicat 主界面 → 左侧「连接」列表右键目标连接 → 「编辑连接」→ 「常规」页 → 确认 Profile Name 字段值(默认同连接名,但可手动修改)
- 在该连接下展开「计划任务」节点 → 找到你要调用的任务 → 右键「编辑」→ 查看顶部名称栏,即为准确的 task 名
- 二者必须与命令行参数中的一字不差,包括大小写和空格
一个典型坑:任务名为 Daily Backup,但参数写了 --task="dailybackup" —— Navicat 不提示,也不执行,只当没这回事。
真正卡住的地方往往不在 Navicat 配置本身,而在于 Windows 任务计划程序对会话上下文、路径解析和凭据加载的隐式约束。尤其当任务从“手动双击能跑”变成“定时不动”,大概率是环境变量、桌面会话隔离或 profile 名不匹配导致的静默失败。

















