必须先解除系统级写保护:右键hosts→属性→取消只读→安全选项卡中为当前用户授予“完全控制”权限;再以管理员记事本打开并严格按“127.0.0.1 域名”格式写入;最后禁用windows defender受控文件夹访问及sfc服务(设start值为4)以防止自动还原。

在 Windows 11 中为本地开发环境配置自定义域名(如 dev.project.local → 127.0.0.1)时,常遇到修改保存后重启或系统更新后 hosts 文件被悄悄还原成默认内容,导致映射失效。这通常源于 Windows 安全机制对系统目录的保护或第三方软件(如某些杀毒工具、Windows Defender 策略)自动恢复“受信任”系统文件的行为。要真正稳定生效,必须同时解决权限控制与防覆盖双重问题。
彻底解除 hosts 文件系统级写保护
这一步是后续所有操作生效的前提,否则任何编辑都会被拒绝或下次启动时被静默回滚。
1、打开文件资源管理器,在地址栏粘贴:C:\Windows\System32\drivers\etc,按回车进入目录。
2、右键点击无扩展名的 hosts 文件 → “属性” → 切换到“常规”选项卡 → 取消勾选“只读”,点击“应用”。
3、切换到“安全”选项卡 → 点击“编辑” → 在弹出窗口中选中你当前登录的用户(例如 DESKTOP-ABC\YourName)→ 勾选“允许”列下的“完全控制” → 点击“确定”。【必须勾选“完全控制”,仅“修改”或“写入”仍可能被组策略拦截】
4、若弹出“Windows 安全”警告,点击“继续”确认权限变更。
用管理员记事本精准写入映射规则
避免使用 VS Code、Notepad++ 等第三方编辑器直接保存——它们即使以管理员运行,也可能因路径解析错误或编码识别偏差,导致写入失败或生成隐藏 BOM 头,触发系统校验失败而还原。
方法一:原生记事本提权直写
1、按 Win + S,输入“记事本”,右键搜索结果 → “以管理员身份运行”。
2、点击“文件” → “打开” → 地址栏粘贴:C:\Windows\System32\drivers\etc\ → 将右下角“文件类型”改为“所有文件 (*.*)” → 选中 hosts → “打开”。
3、在文件末尾另起一行,严格按格式输入:127.0.0.1 dev.project.local。注意:IP 与域名之间只能用单个空格分隔,不能用 Tab 或多个空格;行末不能有空格、分号或中文标点。
4、按 Ctrl + S 保存。若提示“需要管理员权限才能保存到此位置”,说明上一步权限未生效,需返回第一阶段重新检查。
禁用 Windows Hosts 文件自动修复机制
Windows 11 22H2 及之后版本内置了“系统文件完整性保护(SFC)+ Windows Defender 防篡改”双层监控,会定期扫描并还原被修改的 hosts 文件。必须手动关闭该行为。
第一步:关闭 Windows Defender 实时防护对 hosts 的监控
1、打开“Windows 安全中心” → “病毒和威胁防护” → “管理设置”(在“病毒和威胁防护设置”下)→ 关闭“基于信誉的保护”和“勒索软件防护”中的“受控文件夹访问”。
第二步:阻止系统通过 SFC 自动还原
1、以管理员身份运行 PowerShell(右键开始按钮 → “终端(管理员)”)。
2、执行命令:Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SfcOs" -Name "Start" -Value 4 -Type DWORD。该命令将系统文件检查服务设为“禁用”,【此项不可逆,执行后需手动重启电脑才生效】。
3、执行命令:sc stop sfcos 立即停止当前服务进程。
验证映射是否稳定生效
完成上述三步后,不再依赖“刷新 DNS 缓存”来测试——因为 hosts 是 DNS 查询前的第一道解析环节,只要文件未被覆盖,就立即起效。
1、打开命令提示符(无需管理员),输入:ping dev.project.local → 应返回 Reply from 127.0.0.1。
2、在浏览器地址栏输入 http://dev.project.local → 若本地有服务监听 80 端口,应能正常访问;若无服务,应显示连接被拒绝(而非 DNS 错误)。
3、重启电脑后再次执行 ping dev.project.local,确认返回仍是 127.0.0.1 —— 此时才算真正绕过系统还原机制。











