Notepad++保存hosts文件提示“拒绝访问”的根本原因是Windows系统保护该文件,需以管理员身份运行Notepad++后通过File→Open打开编辑并保存;编码须为ANSI或UTF-8无BOM;修改后需执行ipconfig /flushdns等操作清除DNS缓存才能生效。

Notepad++ 保存 hosts 文件提示“拒绝访问”
这是最常见现象:你改完 hosts 文件,点保存时弹出错误框,内容通常是 Access is denied 或 Permission denied。根本原因不是 Notepad++ 有问题,而是 Windows 把 C:\Windows\System32\drivers\etc\hosts 当作系统保护文件,普通用户权限无法直接写入。
解决办法只有一个:让 Notepad++ 以管理员身份运行。但注意——不是每次右键“以管理员身份运行”再手动打开文件,那样容易漏掉权限继承;而是要确保编辑器本身拥有写入权限后,再打开并保存。
- 关闭所有 Notepad++ 窗口
- 在开始菜单或安装目录(如
C:\Program Files\Notepad++\notepad++.exe)中,右键notepad++.exe→ 选择“以管理员身份运行” - 此时再通过 Notepad++ 菜单栏的
File → Open,定位到C:\Windows\System32\drivers\etc\hosts打开 - 修改后可直接
Ctrl+S保存,不会报错
用 Notepad++ 直接拖拽 hosts 文件进去会失败
很多人习惯把 hosts 文件拖进 Notepad++ 窗口,结果发现虽然能打开、能编辑,但保存时依然报错。这是因为拖拽操作触发的是普通用户上下文下的文件读取,Notepad++ 并未自动提升权限去写回——哪怕它本身是以管理员身份启动的,拖拽行为也可能绕过权限上下文。
正确做法是:先确保 Notepad++ 是以管理员身份运行的,再用 File → Open 手动导航打开,或用快捷键 Ctrl+O 调出打开对话框选中文件。这样 Notepad++ 才会以一致的高权限上下文管理该文件的读写。
- 拖拽只适用于已具备写权限的普通文本文件,不适用于系统受保护路径下的文件
- 即使看到文件内容正常显示,也不代表有写权限;保存才是检验权限的唯一动作
- 若误拖拽打开,建议关闭该标签页,重新用
File → Open加载
hosts 文件编码必须是 ANSI 或 UTF-8 无 BOM
Windows 的 hosts 解析器对编码极其敏感。如果你用 Notepad++ 保存为 UTF-8 with BOM 或 UTF-16,系统可能完全忽略新增条目,甚至导致部分网络请求异常。这不是 Notepad++ 的 bug,而是 hosts 文件规范要求纯 ASCII 兼容编码。
检查和设置方式很简单:打开文件后,看 Notepad++ 窗口右下角状态栏,它会显示当前编码(如 UTF-8-BOM)。点击那里,选择 Encode in ANSI 或 Encode in UTF-8(注意不含 BOM)。
- 推荐首选
ANSI:兼容性最好,尤其在老旧 Windows 版本上 - 若需输入中文注释,可用
UTF-8(无 BOM),但务必确认右下角显示的是UTF-8,不是UTF-8-BOM - 保存前务必核对编码,改完别急着关——可以另存为临时文件,用命令行
type hosts确认内容是否可读
修改后不生效?别急着重开 Notepad++
改完 hosts 保存成功 ≠ 立刻生效。Windows 会缓存 DNS 解析结果,浏览器也常自带 DNS 缓存。这时候刷新页面没变化,不是文件没改对,而是旧记录还在内存里。
验证是否真正生效,分两步走:先查系统是否识别新映射,再清缓存。
- 在命令提示符(管理员或非管理员均可)中执行
ping example.local,看解析的 IP 是否是你写的 - 若 ping 正确但浏览器仍连错,运行
ipconfig /flushdns清系统 DNS 缓存 - Chrome/Edge 用户还需访问
chrome://net-internals/#dns点击Clear host cache - 不要反复重启 Notepad++ 或电脑——它跟编辑器无关,只跟系统和应用层缓存有关

















