Notepad++ 无自动只读备份功能,仅响应系统级只读属性;需手动设文件只读位并配合退出备份(Backup on close/save)才能形成基础防护闭环。

Notepad++ 本身不提供“只读备份”功能
它没有「打开时自动创建只读副本」或「编辑前先备份并设为只读」这类机制。所谓“只读备份”,其实是把「系统级只读属性」和「退出备份」两个独立功能手动组合使用,中间没有任何自动化衔接。
常见误解是:勾选了 Settings → Backup → “Backup on close” 就等于文件被保护了——其实这只是在关闭时多存一个 filename.bak,原文件依然可写、可删、可覆盖,完全不防误操作。
真正起作用的只有 Windows 文件系统只读位
Notepad++ 所有只读相关行为(标题栏显示 [Read-Only]、禁用 Ctrl+S、弹出另存为提示)都只响应 FILE_ATTRIBUTE_READONLY。必须由外部设置,它才认:
- 右键文件 → 「属性」→ 勾选「只读」→ 「确定」(对文件夹勾选无效,不递归)
- 命令行快速执行:
attrib +R "C:\path\to\config.json" - Git 仓库中该设置仍有效;
.gitattributes或chmod不影响 Notepad++ 的只读判断
⚠️ 注意:Notepad++ 只在打开文件瞬间读一次只读属性,之后不会监听变更。你在它运行中用 attrib -R 解除只读,标题栏和菜单状态也不会更新——必须关闭再重开。
配合退出备份才能算“有回退能力”
只设只读能防改,但不能防删、不能防误关没保存。要形成基础防护闭环,得加一层本地备份:
- Settings → Preferences → Backup → 勾选
Backup on close(关闭时备份)或Backup on save(每次保存都备份) - 推荐同时勾选
With timestamp,避免多个备份覆盖成一个 - 备份路径默认在原文件同目录,若原文件在只读目录下,备份可能失败——建议手动指定到用户目录下的可写位置,如
C:\Users\You\NppBackups\ - 注意:备份文件
.bak本身**不带只读属性**,仍可被编辑或删除,别把它当保险柜
为什么“以只读方式打开”不管用?
菜单里的 File → Open in read-only mode 是个误导性选项:
- 它只是临时禁用保存按钮,不修改文件属性,也不阻止
Ctrl+Shift+S另存为覆盖原路径 - 关闭再重开就失效,无法持续防护
- 对已打开的文件无效,也不能批量应用到多个标签页
真正需要长期保护的配置文件(比如 notepad++.xml、userDefineLang.xml),光靠只读属性远远不够——用户随时可以右键取消勾选。得结合 Windows ACL 权限限制 + 定期手动归档备份,否则任何“防护”都是纸糊的。











