修改 C:\Windows\System32\drivers\etc\hosts 檔案後,ping 域名仍解析為真實 IP,完全不讀取 hosts 對應關係?即使清除 DNS 快取(ipconfig /flushdns)、停用 DNS Client 服務也無效?這是因為 Windows 8 讀取 hosts 檔案的 DNS Client 服務 (Dnscache)** 需在 etc 資料夾擁有 Network Service** 帳號的讀取/執行權限,否則服務無法載入 hosts 內容。本文提供完整指令修復流程。
ipconfig /flushdns 清除快取後 ping 仍回傳真實 IP。


以系統管理員身分開啟命令提示字元(Win+X → 命令提示字元 (系統管理員)),依序執行:
SC stop Dnscache
SC config Dnscache obj= "NT AUTHORITY\NetworkService"
TAKEOWN /F "%windir%\System32\drivers\etc" /A
ICACLS "%windir%\System32\drivers\etc" /GRANT "NT AUTHORITY\NetworkService":RX
SC start Dnscache
| 指令 | 作用 |
|---|---|
SC stop Dnscache | 停止 DNS Client 服務,釋放對 etc 資料夾的鎖定 |
SC config Dnscache obj= "NT AUTHORITY\NetworkService" | 將 Dnscache 服務的登入身分設為 Network Service(預設即為此,但重設確保一致) |
TAKEOWN /F ... /A | 取得 etc 資料夾擁有權給 Administrators 群組,避免權限不足無法修改 ACL |
ICACLS ... /GRANT "NT AUTHORITY\NetworkService":RX | 授予 Network Service 讀取 (R) 與執行/遍歷 (X) 權限,讓服務能讀取 hosts 檔案 |
SC start Dnscache | 重新啟動 DNS Client 服務,重新載入 hosts 內容 |
指令執行完畢後,再次執行 ping 你在 hosts 設定的域名,應立即回傳 hosts 中指定的 IP。若仍不生效,嘗試 ipconfig /flushdns 再測。
ICACLS 目標必須是 etc 資料夾而非單一 hosts 檔案。Win8 Hosts 失效 90% 是 etc 資料夾缺少 Network Service 讀取/執行權限。五條指令精準授權、重啟服務,即時生效免重開機。下次修改 hosts 不生效,直接跑這組指令,比重灌快一萬倍!