Windows修改hosts文件安全可靠的方法有二:一是以管理员身份运行记事本直接编辑,需按Win+R输入notepad后Ctrl+Shift+Enter提升权限,路径定位至C:\Windows\System32\drivers\etc\,文件类型选“所有文件”,保存时编码选ANSI、文件名严格为hosts;二是桌面中转法,将hosts复制到桌面编辑后再覆盖回原目录,规避权限风险,操作前须备份原文件、解除只读属性并确认用户拥有写入权限,修改后执行ipconfig /flushdns刷新DNS缓存并用ping验证生效。

你需要在 Windows 电脑上安全、可靠地修改本地 hosts 文件,让域名指向指定 IP(比如本地开发用的 test.local → 127.0.0.1),但又怕改错导致网络异常、保存失败或系统拒绝写入——这确实不是双击记事本就能搞定的事,权限、编码、覆盖方式、DNS 缓存四个环节任何一个出问题,都会让修改无效甚至引发访问故障。
以管理员身份运行记事本直接编辑
这是最快捷的临时方案,适合熟悉权限操作、只需偶尔改一两行的用户。核心是让编辑器进程拥有足够高的令牌权限,绕过 UAC 的默认限制。
按下 Win + R 打开“运行”对话框,输入 notepad,按住 Ctrl + Shift 不放再按 Enter,在弹出的用户账户控制提示中点击“是”。
在记事本中点击【文件】→【打开】,地址栏粘贴路径:C:\Windows\System32\drivers\etc\,回车进入。
将右下角“文件类型”下拉菜单改为所有文件(*.*),找到无扩展名的 hosts 文件并打开。
在文件末尾另起一行,输入格式为:IP地址[英文空格]域名,例如:127.0.0.1 test.local。注意:不可用中文空格、制表符或全角符号,否则整行失效。
点击【文件】→【另存为】,确认保存位置仍是原路径,文件名严格填为 hosts(不加 .txt),编码选择 ANSI(Windows 下必须选 ANSI,选 UTF-8 可能导致系统无法加载该行)。
桌面中转法——零风险覆盖
这是兼容性最强、最推荐给普通用户的方案。它完全规避了实时权限校验和系统目录锁定,先在桌面安全编辑,再覆盖回原位置,即使操作失误也不会损坏原始 hosts。
方法一:复制粘贴中转
打开文件资源管理器,在地址栏粘贴 C:\Windows\System32\drivers\etc\ 并回车;右键 hosts 文件 → “复制”,桌面空白处右键 → “粘贴”。
右键桌面副本 → “用记事本打开”,在末尾新增所需映射行,例如:0.0.0.0 ad.doubleclick.net。
保存后关闭记事本,将桌面编辑好的 hosts 文件拖入 C:\Windows\System32\drivers\etc\ 目录,出现提示时选择替换目标中的文件。
方法二:重命名+拖入(防误覆盖)
桌面编辑完成后,把副本重命名为 hosts_new;拖入 etc 目录时,系统会提示“同名文件已存在”,此时不要点‘合并’,必须选‘替换’,否则旧配置仍生效。
修改前必须做的三件事
第一步:备份原始 hosts 文件
在 C:\Windows\System32\drivers\etc\ 目录下,右键 hosts → “复制”,粘贴到桌面并重命名为 hosts_backup_20260723。这一步不能跳过,一旦改错可秒级恢复。
第二步:确认当前用户有写入权限(关键前提)
右键 etc 目录下的 hosts → “属性” → “安全”选项卡 → 点击“编辑” → 选中你的用户名 → 勾选“修改”和“写入” → 点击“确定”。【若此处灰色不可勾选,说明你未被添加进权限列表,需先点‘添加’引入当前用户】
第三步:禁用只读属性
仍在“属性”窗口 → “常规”选项卡 → 取消勾选“只读” → 点击“应用”。弹出警告时点“继续”。
保存后立即验证与刷新
① 打开命令提示符(无需管理员权限),执行:ping -n 1 test.local(将 test.local 换成你刚添加的域名)。
② 观察返回 IP 是否为你设置的目标 IP(如 127.0.0.1)。若返回的是公网 IP 或超时,说明 hosts 未生效。
③ 若未生效,以管理员身份运行命令提示符,执行:ipconfig /flushdns。这一步必须做,否则浏览器和系统仍走旧 DNS 缓存。
④ 再次 ping 验证。成功后,打开浏览器访问该域名,应能正确导向对应服务(如本地 Nginx、XAMPP 或开发服务器)。


















