Win8.1系统下主机文件故障修复方法
不知道大家有没有遇到过Hosts文件无效的问题。本来我的Windows 8.1系统的Hosts文件可以正常使用,但是最近突然莫名其妙的失败了。主机文件的失效给我的工作带来了很多麻烦。为了分析具体原因,我给大家做一个演示测试。
可以看到hosts文件的路径是正确的,映射只有一行,这样可以保证没有其他干扰项。
使用ipconfig /flushdns清理dns缓存,实际上我已经停止了DNS Client服务。然后继续ping,仍然返回真实的DNS解析地址。
可见系统的权限也是有分配的。我自己的帐户和Admin组的帐户的以下权限也是完全控制的。
就这样。不知道为什么最近突然失败了。我可能被什么东西劫持了吗?
分析处理
根据我在报价中的猜测,我使用了一个消息记录器来跟踪与主机文件相关的系统消息。为了对比,我在windows 8.1下操作,和windows XP在虚拟机上运行进行对比。
首先我发现其实所有有网络通讯功能的程序都会检查在HKEY _ local _ machinescurrentcontrolsetservicesdnsscacheparameters这个键下是否有UseHostsFile值,有哪些数据。但是我发现XP和8.1都没有这个值,但是根据之前的实验,XP可以正常读取hosts文件,所以可以断定这是无关紧要的。(但是根据这个判断,Dnscache服务(即在缓存DNS解析结果的服务中显示了名为DNS Client的服务)可以手动强制主机文件不被读取,所以只需修改这个键值即可。).
然后我发现了一个奇怪的现象。每次手动修改hosts文件时,在8.1下都会显示一个名为svchost.exe的进程试图访问hosts文件,但结果是访问被拒绝。在XP下,一个同名的进程试图成功托管文件,但结果是成功的。
根据消息记录器提供的进程的进程标识符,跟踪到它所承载的服务之一是域名系统客户端。因此,可以得出结论,上面提到的域名系统客户端服务肯定有问题。因为访问文件被拒绝,肯定是账号问题,所以我习惯性打开DNS Client的属性页,转到登录选项卡,发现它使用的账号不是默认的本地系统账号,而是一个名为“Network Service”的内置安全主体。
这一切都很清楚。归根结底,这还是一个权威问题。DNS服务使用的帐户不是系统,而是网络服务。虽然我给了系统账号完全的访问控制,但是从我的开篇截图来看,我发现我缺少网络服务的安全主体。目前我们可以断定系统账号与网络服务安全主体无关,导致启动DNS Client服务后无法正常读取hosts文件,导致hosts文件无效。
解决方法是:编辑etc文件夹的访问权限,添加网络服务安全主体并至少授予读取权限,然后重新启动DNS Client服务。目前我的主机里一切正常。
通过以上分析,相信大家可以更清楚地了解Windows 8.1系统下Hosts文件失效的原因,也可以掌握解决的对策。最终,我们的主机文件可以恢复正常。
标签:
版权声明:Win8.1系统下主机文件故障修复方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。