桌面中转法是最稳定、零权限冲突的修改方式,先复制hosts到桌面编辑,再拖回原路径覆盖,全程无需提权;另两种方法为管理员记事本直编和powershell追加,均需注意编码、空格格式及dns刷新。

如果你正为本地开发调试、屏蔽广告或临时绕过DNS解析而需要修改Host文件,又不想被权限报错卡住、不敢直接覆盖系统文件,那就必须避开“以管理员身份打开记事本→直接保存”这种看似直接却极易失败的老路。Windows从Win7起就对C:\Windows\System32\drivers\etc目录实施了强保护,哪怕你点了“是”获得UAC授权,记事本仍可能因编码识别错误、只读属性残留或路径拼写疏漏导致保存失败——此时你看到的不是成功提示,而是“权限不足”或“无法保存到该位置”的弹窗。
桌面中转法:零权限冲突,一步到位
这是目前在Win10/Win11上最稳定、最不容易出错的修改方式,全程无需提权、不碰系统目录锁定机制,所有操作都在桌面完成。
第一步:在文件资源管理器地址栏粘贴 【C:\Windows\System32\drivers\etc】,按回车进入该文件夹。
第二步:找到名为 【hosts】 的无扩展名文件(注意不是 hosts.txt),右键→复制。
第三步:在桌面空白处右键→粘贴,生成一个完全可写的副本。
第四步:右键桌面的 hosts 文件→选择“用记事本打开”,滚动到底部,在最后一行后另起一行,输入你要添加的映射规则,例如:
127.0.0.1 dev.local
0.0.0.0 adserver.example.com
注意:IP与域名之间必须用英文空格分隔,不能用Tab或中文空格;每条规则独占一行;行首不要留空格。
第五步:点击记事本菜单栏【文件】→【保存】,关闭记事本。
第六步:将桌面上已编辑好的 hosts 文件,直接拖拽回 【C:\Windows\System32\drivers\etc】 文件夹内,出现“是否替换”的提示时,点“是”。
管理员记事本直编法:适合熟悉权限操作者
此方法跳过复制步骤,但要求你严格遵循权限启动路径,否则保存必然失败。
方法一:快捷键启动管理员记事本
按下 Win + R → 输入 【notepad.exe】 → 按住 Ctrl + Shift 不放 → 再按 Enter → 在UAC弹窗点“是”。
方法二:手动定位并打开
在已以管理员身份运行的记事本中,点击【文件】→【打开】→ 地址栏粘贴:【%SystemRoot%\System32\drivers\etc\hosts】 → 将右下角“文件类型”改为“所有文件(*.*)” → 选中 hosts → 打开。
编辑完成后,必须点击【文件】→【另存为】,确认“保存位置”仍是原路径,文件名严格填为 【hosts】(不能带 .txt),编码选 ANSI 或 UTF-8(勿选 UTF-8 with BOM)→ 点击保存。
命令行追加法:适合批量添加或脚本化操作
当你只需要往 hosts 文件末尾追加几行规则,且不想打开任何图形界面时,PowerShell 是最快的选择。
以管理员身份打开 PowerShell(开始菜单搜 PowerShell → 右键→“以管理员身份运行”)。
执行以下命令(将 IP 和域名替换成你的实际值):
【Add-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Value "192.168.1.100 test.internal"`n" -Encoding ASCII】
注意:-Encoding ASCII 是关键,避免 Unicode 编码导致系统无法识别;`n 表示换行;命令末尾不能有多余空格或符号,否则会写入乱码。
刷新DNS缓存并验证生效
修改完成后,必须清除本地DNS缓存,否则旧解析结果仍会生效。
以管理员身份打开命令提示符或 PowerShell,输入:
【ipconfig /flushdns】,回车。
验证是否生效:在命令行输入 【ping -n 1 dev.local】(把 dev.local 换成你刚添加的域名),观察返回的 IP 是否与 hosts 中设置的一致;若返回“找不到主机”,说明格式有误或未生效。











