Windows 系统 Hosts 文件完全指南

前言

在 Windows 操作系统的网络配置体系中,hosts 文件是一个极其古老却依然重要的本地域名解析机制。它早于 DNS(Domain Name System)协议诞生,至今仍被广泛用于开发调试、域名屏蔽、内网映射等场景。然而,许多用户在面对这个"没有扩展名的系统文件"时,常常遇到找不到文件、无法保存、修改不生效等问题。


一、Hosts 文件的历史与工作原理

1.1 历史背景

在 1980 年代互联网(当时为 ARPANET)早期,网络上仅有数百台主机。彼时并不存在今天我们所熟知的 DNS 分布式域名系统,所有主机名到 IP 地址的映射都记录在一个名为 HOSTS.TXT 的中央文件中,由斯坦福研究所(SRI)维护,各主机定期通过 FTP 拉取更新。

随着网络规模急剧膨胀,这种集中式管理方式迅速遭遇瓶颈。1983 年,Paul Mockapetris 提出了 DNS 协议(RFC 882/883),用分布式、层次化的域名解析体系取代了中央 HOSTS 文件。然而,为了保持向后兼容以及提供本地优先解析的能力,各操作系统均保留了本地的 hosts 文件,并赋予其高于 DNS 查询的优先级

1.2 在 Windows 中的解析优先级

Windows 进行名称解析时,遵循以下顺序(可通过 netsh 或组策略调整):

  1. 本地 Hosts 文件C:\Windows\System32\drivers\etc\hosts
  2. DNS 客户端缓存ipconfig /displaydns 可查看)
  3. DNS 服务器查询(由网卡配置的 DNS 服务器地址决定)
  4. NetBIOS 名称解析(WINS、广播等,视配置而定)
  5. LLMNR / mDNS(链路本地多播名称解析)

这意味着:如果你在 hosts 文件中写入了某域名的映射,系统将直接使用该映射,不再向 DNS 服务器发起查询。这一特性既是 hosts 文件的核心价值,也是它被恶意软件滥用的原因。

1.3 文件本质

hosts 文件是一个纯文本文件 ,没有扩展名(注意:不是 .txt,也不是 .ini),由操作系统内核的网络组件在启动和网络请求时读取。它不属于任何注册表项,而是以文件形式独立存在。


二、Hosts 文件的存放路径

2.1 标准路径

在 Windows NT 系列操作系统(包括 Windows 2000 / XP / Vista / 7 / 8 / 8.1 / 10 / 11 / Server 2003~2022)中,hosts 文件的固定路径为:

复制代码
C:\Windows\System32\drivers\etc\hosts

其中 C:\Windows 为系统安装目录,默认即 C:\Windows。若系统安装在其他盘符(如 D:\Windows),路径相应变化,但 System32\drivers\etc\hosts 这一段始终不变。

2.2 环境变量等效路径

可以使用系统环境变量来引用,避免硬编码盘符:

复制代码
%SystemRoot%\System32\drivers\etc\hosts

%SystemRoot% 通常解析为 C:\Windows

2.3 同目录下的其他相关文件

C:\Windows\System32\drivers\etc\ 目录下通常还包含以下文件:

文件名 用途
hosts 主机名→IP 映射(本文主角)
networks 网络名→网络号映射(极少使用)
protocol 协议名→协议号映射
services 服务名→端口号映射
lmhosts.sam NetBIOS 名称解析的示例文件

了解这些文件有助于理解整个本地名称解析体系的全貌。


三、Hosts 文件的语法格式

3.1 基本语法

每一行代表一条解析记录,格式为:

复制代码
<IP地址>    <主机名>    [# 注释]
  • IP 地址 :支持 IPv4(如 192.168.1.1)和 IPv6(如 ::12001:db8::1)。
  • 主机名:即要映射的域名或主机名,可以写多个(以空格或 Tab 分隔),表示多个域名指向同一 IP。
  • 注释 :以 # 开头的行整行被忽略;行内 # 之后的内容也被视为注释。
  • 分隔符 :IP 与主机名之间使用空格制表符(Tab) 分隔,数量不限(至少一个)。

3.2 示例

复制代码
# 这是注释行,系统会忽略
# 本地回环
127.0.0.1       localhost
::1             localhost

# 开发环境映射
192.168.1.100   dev.example.com
192.168.1.100   api.example.com   admin.example.com

# 屏蔽广告域名(指向 0.0.0.0 使其无法解析)
0.0.0.0         ads.malware-site.com
0.0.0.0         tracker.adnetwork.net

# IPv6 示例
2001:db8::10    intranet.corp.local

3.3 语法规则与注意事项

  • 大小写不敏感LocalHostLOCALHOSTlocalhost 等效。
  • 不支持通配符 :不能写 *.example.com,必须逐条列出。
  • 不支持 CIDR 或网段:只能写具体的主机名。
  • 不支持端口号127.0.0.1:8080 myapp无效的,端口需在应用层指定。
  • 不支持 CNAME 别名 :不能写 alias → another-domain,只能写 IP → 域名
  • 重复条目 :若同一域名出现多次,Windows 通常取第一条匹配记录。
  • 行尾符 :Windows 使用 CRLF\r\n),但现代解析器也兼容 LF
  • 文件编码 :推荐使用 ANSIUTF-8 无 BOM。若使用 UTF-8 with BOM,可能导致首行解析异常。

3.4 特殊 IP 地址的含义

IP 地址 含义
127.0.0.1 IPv4 本地回环地址
::1 IPv6 本地回环地址
0.0.0.0 常用于"屏蔽"域名,使连接指向无效地址从而快速失败

四、如何打开与编辑 Hosts 文件

⚠️ 核心前提hosts 文件位于系统目录,修改它需要管理员权限。普通用户权限下打开后,保存时系统将拒绝写入。以下所有方法均围绕这一前提展开。

方法一:以管理员身份运行记事本(最推荐)

这是最稳妥、兼容性最好的方法,适用于所有 Windows 版本。

详细步骤:

  1. 按下键盘上的 Win 键(或点击任务栏"开始"按钮)。

  2. 输入 记事本Notepad

  3. 在搜索结果中,右键点击"记事本"应用图标。

  4. 在右键菜单中选择 "以管理员身份运行"

  5. 若弹出用户账户控制(UAC)对话框,点击 "是"

  6. 记事本打开后,点击菜单栏 文件 → 打开 (或按 Ctrl + O)。

  7. 在打开对话框的地址栏中粘贴路径:

    复制代码
    C:\Windows\System32\drivers\etc

    然后按回车。

  8. ⚠️ 关键步骤 :在对话框右下角,将文件类型筛选器从 "文本文档 (*.txt)" 切换为 "所有文件 (.)""所有文件"

    • 如果不切换,你将看不到 hosts 文件(因为它没有 .txt 扩展名)。
  9. 此时目录中会显示 hostsnetworksservices 等文件。

  10. 选中 hosts 文件,点击 "打开"

  11. 编辑完成后,按 Ctrl + S 保存,或点击 文件 → 保存

为什么这个方法最推荐?

  • 以管理员权限启动的记事本拥有对系统目录的写入权限,保存时不会弹出"拒绝访问"。
  • 不依赖任何第三方工具。
  • 操作路径清晰,不易出错。

方法二:通过"运行"对话框快速打开

步骤:

  1. Win + R 打开"运行"对话框。

  2. 输入以下命令:

    复制代码
    notepad C:\Windows\System32\drivers\etc\hosts
  3. 点击"确定"或按回车。

⚠️ 重要提示:

通过此方式打开的记事本默认不具备管理员权限。当你编辑后尝试保存时,系统会弹出以下提示:

"无法保存到 C:\Windows\System32\drivers\etc\hosts。拒绝访问。"

解决办法(若遇到权限问题):

  • 记事本会提示你是否保存到其他位置,选择"是",保存到桌面。
  • 然后打开资源管理器,将桌面的文件复制回 C:\Windows\System32\drivers\etc\,选择"替换目标中的文件"。
  • 系统会再次弹出 UAC 权限确认,点击"继续"。

💡 进阶技巧 :如果你希望在"运行"中直接以管理员权限打开,可以改用以下方法------在"运行"中输入 cmd,按 Ctrl + Shift + Enter(而非普通回车),即可以管理员身份打开 CMD,然后在 CMD 中执行 notepad C:\Windows\System32\drivers\etc\hosts

方法三:通过 CMD 命令提示符(管理员)

步骤:

  1. Win 键,输入 cmd

  2. 在搜索结果中右键 点击"命令提示符",选择 "以管理员身份运行"

  3. 在管理员 CMD 窗口中输入:

    复制代码
    notepad C:\Windows\System32\drivers\etc\hosts
  4. 回车后,记事本将以管理员权限打开并加载 hosts 文件。

  5. 编辑后 Ctrl + S 保存,无需额外操作。

方法四:通过 PowerShell(管理员)

步骤:

  1. Win + X,在弹出的快捷菜单中选择 "Windows PowerShell(管理员)""终端(管理员)" (Windows 11)。

    • 或者:按 Win 键,输入 powershell,右键选择"以管理员身份运行"。
  2. 在 PowerShell 窗口中输入:

    powershell 复制代码
    notepad C:\Windows\System32\drivers\etc\hosts
  3. 回车,后续操作同上。

PowerShell 进阶:直接追加一行记录(无需打开编辑器)

powershell 复制代码
# 以管理员身份运行
Add-Content -Path "C:\Windows\System32\drivers\etc\hosts" -Value "`n192.168.1.200`tmystage.local"

注意:PowerShell 中反引号 n`` 是换行符,t`` 是制表符。

方法五:通过资源管理器直接定位

步骤:

  1. 打开"此电脑"或任意文件资源管理器窗口。

  2. 在地址栏中输入:

    复制代码
    C:\Windows\System32\drivers\etc
  3. 按回车,进入该目录。

  4. 找到 hosts 文件。

  5. 右键 → 打开方式 → 记事本

  6. ⚠️ 此时打开的记事本不是管理员权限 ,保存时会失败。你需要:

    • 先将文件复制到桌面(右键 → 复制 → 到桌面粘贴)。
    • 用记事本打开桌面上的副本并编辑。
    • 保存后,将文件拖回 C:\Windows\System32\drivers\etc\ 目录。
    • 弹出"替换目标中的文件"对话框,点击 "替换文件"
    • 弹出 UAC 权限确认,点击 "继续"

方法六:使用第三方代码编辑器

对于频繁修改 hosts 文件的开发者,使用功能更强的编辑器效率更高。以下编辑器均支持以管理员权限运行:

编辑器 操作方式
VS Code 右键 VS Code 图标 → 以管理员身份运行 → Ctrl+O → 导航到路径打开
Notepad++ 右键 Notepad++ 图标 → 以管理员身份运行 → 文件 → 打开
Sublime Text 同上,右键以管理员运行
Vim 在管理员 CMD 中执行 vim C:\Windows\System32\drivers\etc\hosts

💡 VS Code 小贴士:安装 "Hosts Editor" 扩展后,可以在 VS Code 内获得 hosts 文件的语法高亮和一键切换注释功能。

方法七:使用专用 Hosts 管理工具(适合大量规则)

如果你需要频繁切换多套 hosts 规则(如开发/测试/生产环境),手动编辑效率极低,可以考虑:

  • SwitchHosts(开源、跨平台):支持方案管理、一键切换、远程 hosts、正则匹配。
  • HostsMan:轻量级,支持备份、规则分类。
  • Gas Mask (macOS)/ Hosts Editor(Windows Store)等。

这些工具本质上仍然是修改同一个文件,但提供了图形化管理层。


五、修改后的生效机制

5.1 是否立即生效?

在绝大多数情况下,hosts 文件保存后立即生效 ,无需重启计算机。Windows 的 DNS 客户端服务(Dnscache)在处理新的解析请求时会重新读取 hosts 文件。

5.2 为什么有时感觉"没生效"?

常见原因包括:

  1. 浏览器自身的 DNS 缓存 :Chrome、Edge、Firefox 等浏览器维护独立的 DNS 缓存,不受系统 ipconfig /flushdns 影响。
  2. 系统 DNS 客户端缓存:已缓存的解析结果可能尚未过期。
  3. 应用程序自身的连接池:某些程序(如 Java 应用、数据库客户端)会保持长连接,不会重新解析。
  4. 文件未真正保存:权限不足导致保存失败但用户未察觉。

5.3 强制刷新的完整步骤

按以下顺序操作,确保修改立即生效:

第一步:刷新系统 DNS 缓存

以管理员身份打开 CMD 或 PowerShell,执行:

cmd 复制代码
ipconfig /flushdns

成功输出:

复制代码
Windows IP 配置
已成功刷新 DNS 解析缓存。

第二步:重启 DNS 客户端服务(可选,更彻底)

cmd 复制代码
net stop dnscache
net start dnscache

注意:Dnscache 服务停止期间,所有域名解析将直接查询 DNS 服务器,可能短暂影响网络。通常 flushdns 已足够,此步骤仅在极端情况下使用。

第三步:刷新浏览器 DNS 缓存

浏览器 操作
Chrome / Edge 地址栏输入 chrome://net-internals/#dns(Edge 为 edge://net-internals/#dns)→ 点击 "Clear host cache"
Firefox 地址栏输入 about:config → 搜索 network.dnsCacheExpiration → 设为 0 → 重启浏览器;或直接关闭浏览器重新打开
Opera 同 Chrome 方式

第四步:重启相关应用程序

如果目标应用(如 IDE、数据库工具、游戏客户端等)已建立连接,需完全退出后重新启动。

5.4 验证是否生效

在 CMD 或 PowerShell 中执行:

cmd 复制代码
ping your-domain.com

cmd 复制代码
nslookup your-domain.com

⚠️ 注意nslookup 默认不读取 hosts 文件,它直接查询 DNS 服务器。因此验证 hosts 是否生效应使用 ping,而非 nslookup。如果 ping 返回的 IP 是你写入的 IP,说明 hosts 已生效。

也可以使用 PowerShell:

powershell 复制代码
Resolve-DnsName -Name "your-domain.com" -Type A

六、常见应用场景

6.1 本地开发环境映射

将自定义域名指向本地或内网开发服务器:

复制代码
127.0.0.1       myapp.local
127.0.0.1       api.myapp.local
192.168.1.50    staging.myapp.com

这样无需购买域名、无需配置 DNS,即可在本地用友好域名访问服务。

6.2 屏蔽广告与恶意网站

将不需要的域名指向 0.0.0.0127.0.0.1,使浏览器无法建立连接:

复制代码
0.0.0.0         ads.doubleclick.net
0.0.0.0         tracking.analytics.com
0.0.0.0         malware-site.example

社区项目如 StevenBlack/hosts 提供了整合数万条广告/恶意域名的 hosts 文件,可直接替换使用。

6.3 绕过 DNS 污染 / 加速访问

在某些网络环境下,将特定域名指向正确的 IP 地址可绕过 DNS 污染:

复制代码
140.82.121.4    github.com

⚠️ 此方法需要自行确认 IP 的正确性,且 IP 可能变动,需定期维护。

6.4 内网服务访问

企业内部常使用非标准域名访问内部系统:

复制代码
10.0.0.5        oa.company.internal
10.0.0.6        erp.company.internal
10.0.0.7        wiki.company.internal

6.5 测试 SSL 证书与多域名

开发人员在本地测试 HTTPS 多域名证书时,可通过 hosts 将多个域名指向 127.0.0.1,配合本地 Web 服务器(Nginx/Apache)的虚拟主机配置进行验证。

6.6 临时接管域名(迁移测试)

网站迁移到新服务器后,可在本机 hosts 中将域名指向新服务器 IP,提前验证新环境是否正常,而无需修改公网 DNS:

复制代码
203.0.113.50    www.mywebsite.com

验证无误后再去域名服务商处修改 DNS 记录。


七、备份与恢复

7.1 为什么必须备份?

  • 误操作可能导致网络异常(如将关键域名指向错误 IP)。
  • 恶意软件可能篡改 hosts 文件。
  • 系统更新或安全软件可能重置 hosts 文件。

7.2 备份方法

手动备份:

cmd 复制代码
:: 以管理员身份运行
copy C:\Windows\System32\drivers\etc\hosts C:\Windows\System32\drivers\etc\hosts.bak

或在资源管理器中直接复制一份到安全位置(如 D:\Backup\hosts_20260825.bak)。

使用 PowerShell 带时间戳备份:

powershell 复制代码
Copy-Item "C:\Windows\System32\drivers\etc\hosts" "C:\Windows\System32\drivers\etc\hosts.bak.$(Get-Date -Format 'yyyyMMdd_HHmmss')"

7.3 恢复方法

将备份文件复制回原路径并覆盖:

cmd 复制代码
:: 以管理员身份运行
copy /Y C:\Windows\System32\drivers\etc\hosts.bak C:\Windows\System32\drivers\etc\hosts

恢复后执行 ipconfig /flushdns 刷新缓存。

7.4 Windows 默认 hosts 文件内容

如果你需要一份"出厂状态"的 hosts 文件,以下是 Windows 10/11 的默认内容:

复制代码
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host
#
# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

八、常见问题与故障排查

问题 1:找不到 hosts 文件

原因: 文件类型筛选器设置为"文本文档 (*.txt)",导致无扩展名的 hosts 被隐藏。

解决: 在文件打开对话框中,将类型改为 "所有文件 (.)"

问题 2:保存时提示"拒绝访问"或"需要管理员权限"

原因: 当前编辑器未以管理员身份运行。

解决:

  • 关闭文件,重新以管理员身份打开编辑器(参见方法一/三/四)。
  • 或者:先保存到桌面,再复制回原目录覆盖。

问题 3:保存时提示"文件被占用"或"正在被另一个程序使用"

原因: 安全软件(如 360、火绒、Windows Defender)正在保护 hosts 文件,或另一个编辑器已锁定该文件。

解决:

  • 关闭所有已打开该文件的编辑器实例。
  • 暂时关闭杀毒软件的"系统文件保护"或"网络防护"功能。
  • 在安全模式下编辑(重启 → 按 F8Shift+重启 → 安全模式)。

问题 4:修改后 ping 返回的仍是旧 IP

排查步骤:

  1. 确认文件确实保存成功(重新打开检查内容)。
  2. 执行 ipconfig /flushdns
  3. 检查是否有多条相同域名的记录(第一条生效)。
  4. 检查域名拼写是否完全一致(包括子域名)。
  5. 确认没有拼写错误(如多余空格、Tab 与空格混用通常没问题,但 IP 格式错误会导致整行无效)。
  6. 重启浏览器或目标应用。

问题 5:hosts 文件被安全软件锁定无法修改

解决:

  • 在安全软件设置中,将 C:\Windows\System32\drivers\etc\hosts 加入白名单或信任区。
  • 临时禁用实时防护 → 修改 → 重新启用。
  • 使用安全软件自带的"网络修复"或"hosts 文件管理"功能。

问题 6:文件编码问题导致解析失败

现象: 保存后部分行不生效,或出现乱码。

解决:

  • 在记事本中"另存为",编码选择 ANSI (即 Windows 默认编码)或 UTF-8(不要选"UTF-8 带 BOM")。
  • 在 Notepad++ 中:编码 → 转为 ANSI 编码 → 保存。
  • 在 VS Code 中:右下角点击编码 → "通过编码保存" → 选择 UTF-8(不带 BOM)或 Windows 1252

问题 7:hosts 文件被恶意软件篡改

现象: 浏览器被劫持到陌生网站,hosts 中出现大量未知条目。

解决:

  1. 以管理员身份打开 hosts 文件,删除所有可疑条目。
  2. 运行完整的杀毒扫描(Windows Defender 全盘扫描 / 火绒 / Malwarebytes)。
  3. 检查是否有计划任务或启动项在定期篡改 hosts。
  4. 使用 icacls 命令修复文件权限(见下文)。

九、安全与权限管理

9.1 查看当前文件权限

在管理员 CMD 中执行:

cmd 复制代码
icacls C:\Windows\System32\drivers\etc\hosts

正常输出类似:

复制代码
C:\Windows\System32\drivers\etc\hosts
    NT AUTHORITY\SYSTEM:(I)(F)
    BUILTIN\Administrators:(I)(F)
    BUILTIN\Users:(I)(RX)
  • (F) = 完全控制
  • (RX) = 读取和执行(普通用户只有只读权限)
  • (I) = 继承自父目录

9.2 修复权限(若被异常修改)

cmd 复制代码
:: 重置为默认权限
icacls C:\Windows\System32\drivers\etc\hosts /reset

:: 或手动设置
icacls C:\Windows\System32\drivers\etc\hosts /grant Administrators:F /grant SYSTEM:F /grant Users:RX

9.3 设置文件为只读(防止恶意篡改)

编辑完成后,可将文件设为只读:

cmd 复制代码
attrib +r C:\Windows\System32\drivers\etc\hosts

需要再次编辑时,先去除只读:

cmd 复制代码
attrib -r C:\Windows\System32\drivers\etc\hosts

⚠️ 注意:设为只读后,某些系统更新或网络配置工具可能无法正常修改 hosts,请根据实际需求决定。

9.4 启用文件完整性保护

Windows 的 Windows File Protection (WFP) / Windows Resource Protection (WRP) 机制对 System32 下的关键文件有保护。hosts 文件虽然受一定保护,但不如系统 DLL 严格。确保系统更新正常、Defender 实时防护开启,是防止篡改的基础。


十、高级技巧与最佳实践

10.1 使用注释管理多套配置

在 hosts 文件中用注释块分隔不同用途的配置,方便启用/禁用:

复制代码
# ========== 开发环境 ==========
# 192.168.1.100   dev.api.example.com
# 192.168.1.100   dev.web.example.com

# ========== 测试环境 ==========
192.168.2.100   test.api.example.com
192.168.2.100   test.web.example.com

# ========== 广告屏蔽 ==========
0.0.0.0         ads.example.com

需要切换时,只需注释/取消注释相应区块。

10.2 使用脚本自动化管理

PowerShell 脚本:批量添加条目

powershell 复制代码
# 需要管理员权限
$hostsPath = "$env:SystemRoot\System32\drivers\etc\hosts"
$entries = @(
    "192.168.1.10    app1.local",
    "192.168.1.11    app2.local",
    "192.168.1.12    db.local"
)

# 备份
Copy-Item $hostsPath "$hostsPath.bak" -Force

# 追加
foreach ($entry in $entries) {
    Add-Content -Path $hostsPath -Value $entry
}

# 刷新 DNS
ipconfig /flushdns

Write-Host "已添加 $($entries.Count) 条记录。" -ForegroundColor Green

PowerShell 脚本:移除包含特定关键字的行

powershell 复制代码
$hostsPath = "$env:SystemRoot\System32\drivers\etc\hosts"
$content = Get-Content $hostsPath | Where-Object { $_ -notmatch "example\.com" }
Set-Content -Path $hostsPath -Value $content -Encoding ASCII
ipconfig /flushdns

10.3 结合 WSL(Windows Subsystem for Linux)

WSL2 有独立的 /etc/hosts 文件,与 Windows 的 hosts 文件互不影响。如果你需要在 WSL 中也使用自定义映射:

bash 复制代码
# 在 WSL 终端中
sudo nano /etc/hosts
# 或
sudo vim /etc/hosts

注意:WSL2 每次启动时可能重写 /etc/hosts(由 /etc/wsl.conf 控制)。若要持久化,可在 /etc/wsl.conf 中设置:

ini 复制代码
[network]
generateHosts = false

10.4 hosts 文件的性能考量

  • Windows 对 hosts 文件的条目数量没有硬性上限,但条目过多(如超过 10,000 条)会轻微增加每次名称解析的耗时(因为是逐行线性匹配)。
  • 对于需要屏蔽数万条域名的场景,建议使用本地 DNS 代理(如 Pi-hole、AdGuard Home、dnsmasq)替代 hosts 文件。
  • 日常使用中,几百条记录完全不会造成可感知的性能影响。

10.5 与 DNS-over-HTTPS (DoH) / DNS-over-TLS (DoT) 的关系

  • Windows 11 和现代浏览器支持 DoH/DoT。
  • hosts 文件的优先级始终高于 DoH/DoT。即使浏览器启用了安全 DNS,本地 hosts 文件中的记录仍然优先生效(前提是浏览器使用了系统解析器而非完全绕过)。
  • 但部分浏览器(如 Firefox 的"基于 DNS 的 HTTPS"模式)可能完全绕过系统解析,此时 hosts 可能不生效。需在浏览器设置中确认。

10.6 组策略对 hosts 的影响

在企业域环境中,组策略可能限制对 hosts 文件的修改:

  • 路径:计算机配置 → 管理模板 → 系统 → 文件系统(视 Windows 版本)。
  • 某些安全基线会通过脚本定期还原 hosts 文件。
  • 若遇到"修改后被自动还原"的情况,请联系域管理员确认是否有相关策略。

十一、不同 Windows 版本的差异说明

Windows 版本 路径 特殊说明
Windows 95 / 98 / ME C:\Windows\hosts System32\drivers\etc 结构,使用 16 位系统
Windows 2000 / XP / Server 2003 C:\Windows\System32\drivers\etc\hosts 经典路径,与现版本一致
Windows Vista / 7 / 8 / 8.1 同上 引入 UAC,修改需管理员权限
Windows 10 / 11 / Server 2016~2022 同上 支持 IPv6 条目、支持 UTF-8
Windows 11 24H2+ 同上 新增 DoH 支持,不影响 hosts 优先级

自 Windows NT 4.0 以来,System32\drivers\etc\hosts 路径保持一致,无需担心版本差异。


十二、完整操作流程(Quick Reference)

将最核心的操作浓缩为一份速查清单:

复制代码
┌─────────────────────────────────────────────────────────┐
│  1. 以管理员身份打开记事本                                │
│     → Win 键搜索"记事本" → 右键 → 以管理员身份运行       │
│                                                         │
│  2. 打开文件                                            │
│     → 文件 → 打开                                      │
│     → 路径:C:\Windows\System32\drivers\etc            │
│     → 文件类型改为"所有文件 (*.*)"                      │
│     → 选中 hosts → 打开                                │
│                                                         │
│  3. 编辑                                               │
│     → 每行格式:IP地址 + 空格/Tab + 域名               │
│     → # 开头为注释                                     │
│                                                         │
│  4. 保存                                               │
│     → Ctrl + S                                         │
│                                                         │
│  5. 刷新                                               │
│     → 管理员 CMD:ipconfig /flushdns                   │
│     → 重启浏览器                                       │
│                                                         │
│  6. 验证                                               │
│     → ping your-domain.com                             │
│     → 确认返回的 IP 是你在 hosts 中写入的               │
└─────────────────────────────────────────────────────────┘
相关推荐
录大大i1 小时前
Windows前端开发环境搭建终极实战文档(Nvm+Node+Pnpm+Nrm)
windows
Dovis(誓平步青云)1 小时前
心情日记的安全编辑流程:输入校验、删除确认与状态回收
android·运维·服务器·开发语言·windows·安全
sg_knight1 小时前
openCode 安装与初始化配置(Windows / macOS / Linux)
linux·windows·macos·llm·agent·ai编程·opencode
Lazionr3 小时前
模板进阶:深入理解模板机制
c++·windows
豆沙沙包?10 小时前
C++~~~stack容器、queue容器、list容器(p45-P56)
c++·windows·list
戒了,最后一次17 小时前
DeepSeek Harness 源码安装教程(Windows 篇)
windows·腾讯云·deepseek·harness
Flag在我手里18 小时前
应急响应-Windows权限维持
windows·rdp·应急响应·玄机
SWAGGY..21 小时前
【C++初阶】:(14)从底层结构理解 deque——为什么它成为 stack 和 queue 的默认容器
windows
呉師傅21 小时前
关于惠普LaserJet1018打印机在Windows11上打印颜色偏淡的问题解决方法
运维·服务器·windows·计算机外设·电脑