Notepad++的[READ ONLY]仅反映打开时的Windows只读属性快照,不动态监听;真实锁定需查NTFS权限、所有权及进程句柄,管理员运行后须手动打开文件并确保父目录ACL授权。

Notepad++ 本身不显示文件锁定状态,只读标识只是 Windows 属性快照
Notepad++ 标题栏出现 [READ ONLY],不代表文件当前被系统级锁定,它只是在打开瞬间读取了 Windows 的 FILE_ATTRIBUTE_READONLY 标志。这个标志可能早已被清除,但 Notepad++ 不会动态监听——你改了属性,它也不会自动刷新状态。常见误判场景包括:
• 文件夹被设为只读(对子文件无效)
• 文件在网络路径或 OneDrive 同步目录中,只读位被忽略
• 文件本身没被锁,但所在目录 NTFS 权限拒绝写入(比如 C:\Windows\System32\drivers\etc)
• 预览窗格、杀毒软件或日志进程正独占句柄,Notepad++ 却只报“权限被拒绝”这种模糊提示
管理员身份下查看并验证真实权限的三步操作
要确认是不是真被锁,不能只看 Notepad++ 界面,得进系统层查:
- 右键目标文件 → 「属性」→ 切换到「安全」选项卡 → 点击「高级」→ 查看「所有者」是否为你当前登录用户名;如果不是,说明你连所有权都没有,更别说写入
- 在「高级安全设置」窗口点「禁用继承」→ 选「将继承的权限转换为此对象的显式权限」→ 再点「添加」→ 「选择主体」输入你的用户名 → 勾选「完全控制」→ 务必勾选「替换所有子对象权限项」(尤其对
etc这类系统文件夹必须打钩) - 回到「常规」选项卡,确认「只读」复选框未勾选;再打开命令行执行:
attrib "C:\Windows\System32\drivers\etc\hosts",输出里不应含R字符
Notepad++ 启动方式决定权限上下文是否生效
就算你右键「以管理员身份运行」了 Notepad++,以下操作仍会绕过提权上下文,导致保存失败:
- 双击文件图标(触发默认关联,启动的是普通权限进程)
- 资源管理器右键菜单 → 「在 Notepad++ 中编辑」(该菜单项默认不带提权)
- 拖拽文件到已运行的 Notepad++ 窗口(继承原进程权限)
正确做法是:先以管理员身份启动 Notepad++(右键快捷方式 → 「以管理员身份运行」),再通过 File → Open 或 Ctrl+O 手动导航打开文件;打开对话框中记得把文件类型切为「所有文件」,否则像 hosts 这种无扩展名文件会被过滤掉。
容易被忽略的隐形锁:NTFS 权限 ≠ 文件属性,且不继承
很多人清除了 attrib +R 就以为万事大吉,结果还是保存失败。真正卡住的往往是父目录的 ACL 设置。例如 C:\Windows\System32\drivers\etc 默认不继承 System32 的权限,且其 ACL 明确拒绝 Users 组写入。这时候即使你 own 了 hosts 文件,只要父文件夹没给你「修改」或「写入」权限,CreateFile 调用照样返回 ERROR_ACCESS_DENIED。别跳过「高级安全设置」里的「替换所有子对象权限项」——这一步不是可选,是必要。


















