本质是DNS Client服务缓存、文件编码错误(非ANSI)、权限不足或只读属性导致hosts修改未被系统读取;需以管理员权限用ANSI编码编辑、停用DNS Client服务并清除缓存。

修改Windows 10的hosts文件后,浏览器访问域名仍跳转到旧IP或无法访问,本质是系统绕过了你刚写入的新映射——不是没保存,而是DNS Client服务、本地缓存、文件权限或编码问题把你的配置“锁死”了。
确认hosts文件是否真正生效
先验证改动有没有被系统读取:按下Win + R,输入notepad C:\Windows\System32\drivers\etc\hosts回车。若弹出UAC提示,点【是】;若直接报错“找不到文件”或打开空白,说明文件未被正确编辑或已被覆盖。
打开后检查最后一行是否为类似192.168.1.100 example.com的格式,且没有末尾空格、制表符或UTF-8 BOM头——记事本另存时务必选“ANSI”编码,否则Windows拒绝加载该文件。
清除DNS Client服务强制缓存
Windows 10默认启用DNS Client服务,它不仅缓存DNS查询结果,还会主动忽略hosts变更,直到缓存过期或服务重启。
方法一:临时刷新(推荐先试)
以管理员身份运行CMD → 输入ipconfig /flushdns → 回车。这仅清空DNS缓存,不触碰hosts绑定逻辑。
方法二:停用服务(治本)
Win + R → 输入services.msc → 找到【DNS Client】 → 右键→属性→启动类型改为【手动】→点击【停止】→确定。此后hosts修改立即生效,无需等待。
注意:停用后部分应用(如旧版Skype)可能短暂解析延迟,但不影响网页访问。
绕过权限与只读限制的硬核写入法
很多用户反复保存hosts却无效,根本原因是系统阻止了对etc目录下文件的写入——即使你右键“以管理员身份运行记事本”,Windows仍可能因UAC策略或文件属性拦截保存动作。
第一步:解除只读属性
进入C:\Windows\System32\drivers\etc → 右键hosts → 属性 → 取消勾选【只读】→ 应用 → 点【是】确认对所有用户生效。
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
第二步:用PowerShell强制覆盖(比记事本更可靠)
以管理员身份运行PowerShell → 执行:
Set-Content -Path "$env:windir\System32\drivers\etc\hosts" -Value "`n127.0.0.1 test.local" -Encoding ASCII
这条命令用纯ASCII编码直接写入,彻底避开记事本的BOM陷阱和权限校验漏洞。执行后立刻生效,无需重启。
重置hosts到出厂状态(终极兜底)
当文件被恶意软件污染、行末混入不可见字符或整段失效时,重建比修复更快。
① 打开记事本(管理员权限)→ 粘贴以下内容:
# Copyright (c) 1993-2009 Microsoft Corp.
# This is a sample HOSTS file...
127.0.0.1 localhost
::1 localhost
② 文件 → 另存为 → 文件名填hosts(不加.txt!)→ 保存类型选【所有文件】→ 编码选【ANSI】→ 保存到桌面。
③ 进入C:\Windows\System32\drivers\etc → 将原hosts重命名为hosts.bak → 把桌面新文件拖入此文件夹 → 提示需管理员权限时点【继续】。
这一步确保hosts结构干净、无非法字符、编码合规,且保留了系统必需的localhost条目。

















