Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Win8.1 Hosts 檔案失效?DNS Client 服務帳戶錯誤導致無法讀取,修正權限即可恢復

編輯:Win8 系統應用技巧

Windows 8.1 修改 C:\Windows\System32\drivers\etc\hosts 後,ping 域名仍解析為真實 IP,Hosts 對應不生效。經過程序監控追蹤發現:DNS Client 服務(Dnscache)執行帳戶為「Network Service」而非預設「Local System」,導致無法讀取 Hosts 檔案(權限僅給 SYSTEM 與 Administrators),產生「Access Denied」錯誤。

Hosts 檔案內容正確
ping 仍解析真實 IP
Hosts 資料夾權限缺少 Network Service

根本原因分析

  1. 所有網路程式會檢查註冊表 HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\UseHostsFile,但 Win8.1/XP 皆無此值,非關鍵因素。
  2. 使用訊息記錄器追蹤:修改 Hosts 後,svchost.exe(載入 DNS Client 服務)嘗試讀取 Hosts 檔案,Win8.1 回傳 Access Denied,XP 回傳 Success。
  3. 查詢 DNS Client 服務屬性 → 「登入」索引標籤:帳戶為 Network Service(內建安全主體),非預設 Local System。
  4. Hosts 所在 etc 資料夾權限僅含 SYSTEM、Administrators、Users,**缺少 Network Service**,故讀取失敗。

解決方案:為 etc 資料夾授予 Network Service 讀取權限

  1. 開啟檔案總管 → C:\Windows\System32\drivers\etc → 右鍵「內容」→ 「安全性」索引標籤。
  2. 點選「編輯」→ 「新增」→ 輸入 Network Service → 「檢查名稱」→ 「確定」。
  3. 在群組或使用者名稱清單選取 Network Service → 勾選「讀取」與「讀取與執行」權限 → 「確定」套用。
  4. 重新啟動 DNS Client 服務:
    net stop dnscache && net start dnscache
    或在「服務」中右鍵 DNS Client 選「重新啟動」。
  5. 驗證:ping Hosts 中對應的域名,應回傳指定 IP。

補充說明

  • DNS Client 服務帳戶變更原因可能為第三方優化軟體、安全策略腳本、或系統升級殘留。
  • 若不想改權限,亦可將 DNS Client 服務帳戶改回「Local System」(服務屬性 → 登入 → 本機系統帳戶),但需確認無其他相依服務受影響。
  • 停用 DNS Client 服務雖能繞過快取直接查詢 Hosts,但會降低 DNS 解析效能,不建議長期停用。

結語

Win8.1 Hosts 失效多為 DNS Client 服務帳戶異常導致權限不足。透過授予 etc 資料夾 Network Service 讀取權限,或將服務帳戶改回 Local System,均可從根本解決。此問題揭示了服務帳戶與檔案系統權限一致性的重要性。

Copyright © Windows教程網 All Rights Reserved