锁定hosts文件写入权限是防篡改最有效手段,需禁用继承、删除非必要账户权限、仅授予管理员“读取”和“读取和执行”权,并设置只读/隐藏属性及attrib+icacls命令固化保护。
本地开发环境失效、DNS劫持和隐私泄露,都可能由 hosts 文件遭到偷偷改写引发。在 Windows 11 中,广告拦截工具、优化大师、恶意浏览器插件等第三方软件都有这种风险,因此非法写入通道必须从权限源头切断。
该操作会直接取消 TrustedInstaller 与管理员之外所有进程的修改能力,是最有效的防篡改措施。
打开文件资源管理器,并在地址栏中粘贴:C:WindowsSystem32driversetc,随后按回车键进入该目录。
右键单击 hosts 文件,依次选择“属性”“安全”选项卡,再点击“高级”按钮。
先在“高级安全设置”窗口选择“禁用继承”;提示弹出后,选中“从此对象中删除所有已继承的权限”,再用“确定”完成操作。
此时列表里只会保留少量原始权限项。逐一选中除 TrustedInstaller 需要删除的是除你当前登录的管理员账户之外的所有条目,其中包括 SYSTEM、Users、Everyone。每处理一条,先点击“删除”,再用“确定”确认。
【关键操作】进入“权限条目”窗口的方法是双击你自己的管理员账户条目。权限仅保留“读取”和“读取和执行”,“写入”“修改”“完全控制”绝对不能勾选,最后以“确定”保存。
单独依赖 ACL 权限仍然不足,某些低权限进程可能继续绕过,因此还需叠加文件系统属性保护。
“只读”和“隐藏”需要在 hosts 文件“属性”窗口的“常规”选项卡中选中;之后点击“应用”。
出现“你需要提供管理员权限才能更改此文件夹的属性”时,先选“继续”,再确认 UAC 提示或输入管理员密码。
普通程序将因此连写句柄都无法打开;它调用 CreateFile 或 WriteFile API 时,得到的直接结果是 ERROR_ACCESS_DENIED。
由于部分后台服务可能重置图形界面中的设置,建议在管理员 PowerShell 中执行下列命令,确保保护不可逆。
Windows Terminal(PowerShell)需使用管理员身份运行。
按照顺序执行下面两条命令:
attrib +r +a +s +h C:WindowsSystem32driversetchosts
icacls C:WindowsSystem32driversetchosts /inheritance:r /grant:r "NT SERVICETrustedInstaller:(F)" /grant:r "%USERNAME%:(R)"
【注意】在第二条命令中, %USERNAME% 会被自动替换成当前用户名,不需要手动调整;如果执行后出现“处理成功”提示,就表示权限已经被强制锁定。