萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Windows 8 使用技巧

Windows 8.1 Hosts 檔案失效深度分析:DNS Client 服務帳戶權限導致

Windows 8.1 系統中 Hosts 檔案修改後不生效、ping 仍解析真實 IP、ipconfig /flushdns 無效、甚至停用 DNS Client 服務也無效。經深度追蹤發現,核心原因在於 **DNS Client 服務(Dnscache)執行帳戶異常**,導致無法讀取 Hosts 檔案。

現象重現與排查

  • Hosts 檔案路徑正確(C:\Windows\System32\drivers\etc\hosts),內容正確,權限給予 SYSTEM、Administrators、目前使用者「完全控制」。
  • ipconfig /flushdns 清除快取後 ping 仍回傳真實公網 IP。
  • 使用訊息記錄器監控發現:svchost.exe(載入 DNS Client 服務)嘗試讀取 Hosts 檔案,結果為 Access Denied;同環境下 Windows XP 為 Success。

根因定位

  1. 追蹤 svchost.exe PID,確認載入服務為 **DNS Client (Dnscache)**。
  2. 開啟服務內容 → 「登入」索引標籤,發現「這個帳戶」非預設的「本機系統帳戶」,而是 「網路服務」 內建安全主體。
  3. Hosts 檔案/資料夾 ACL 中**缺少「網路服務」主體的讀取權限**,導致服務無法讀取 Hosts,轉而使用 DNS 快取/查詢結果。

解決方案

  1. 右鍵 C:\Windows\System32\drivers\etc 資料夾 → 「內容」→「安全性」→「編輯」→「新增」。
  2. 輸入物件名稱:Network Service → 「檢查名稱」→ 確定。
  3. 給予「讀取」權限(勾選「讀取與執行」、「列出資料夾內容」、「讀取」)。
  4. 重新啟動「DNS Client」服務(或重開機)。

驗證

修改 Hosts 後 ping 立即回傳指定 IP,問題徹底解決。

延伸知識

  • 註冊表 HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\UseHostsFile 可強制 DNS Client 不讀取 Hosts(值為 0),但預設不存在此值,非本案原因。
  • DNS Client 服務帳戶被更改可能源於第三方優化工具、安全軟體、或手動誤操作。
  • 建議定期檢查關鍵系統服務(DNS Client、DHCP Client、Windows Update 等)執行帳戶是否為預設值。
copyright © 萬盛學電腦網 all rights reserved