Windows 7 etc/hosts 文件损坏了吗?

Windows 7 etc/hosts 文件损坏了吗?

我有一个正在运行的本地网络服务器,我想以 myserver.localhost 的身份访问它,因此我添加了一个条目

127.0.0.1       myserver.localhost

C:\Windows\System32\drivers\etc\hosts。这很有效。

然后发生了一些事情。除其他外,我不得不禁用 Windows 用户访问控制,但我怀疑这不是原因。现在系统不再对 hosts 文件中的更改做出反应。我注释掉了该条目,添加了新的测试条目,多次刷新了 DNS 缓存,重新启动了机器,休息了一会儿,但没有任何帮助。

nslookup 仍然会为 myserver.localhost 返回 127.0.0.1,并且为我添加的任何测试条目返回不存在的域。在我看来,文件本身似乎在某种程度上被破坏了(它只是一个文本文件,但无论如何......)并且 Windows 无法处理它,因此只返回它认为是最后一个好结果的任何内容。

有人知道如何在不重新安装整个系统的情况下恢复正常工作的 hosts 文件吗?

答案1

您是如何编辑 hosts 文件的?也许编辑器为文件添加了扩展名 (.txt)!从 dos 提示符 ( dir C:\Windows\System32\drivers\etc\hosts*) 中检查。

答案2

关于 Windows 中的 HOSTS 文件和 nslookup 工具如何交互,存在一个普遍的误解。您在 HOSTS 文件中输入的值是用过的在您与指定的任何域名建立连接时,系统都会自动执行此操作。这实际上是通过您在 HOSTS 文件中输入来硬编码的。但是,nslookup忽略HOSTS 文件中除 localhost 之外的任何内容。尝试以下操作:向 HOSTS 文件添加条目,然后保存文件。执行 nslookup:它应该返回真实 IP 地址(如果真实地址不存在,则返回 none)。现在 ping 主机。它应该 ping 您在 HOSTS 文件中指定的 IP。

我不知道这种行为的确切原因,但我相信可能是因为 nslookup 总是进行 DNS 查询,对于 上的任何内容*.localhost,它都会询问本地计算机的地址是什么(因此您会从 HOSTS 文件中获取结果),但对于其他内容,它会询问您已配置的 DNS 服务器。这部分只是猜测,但我描述的实际行为是我多次观察到的。

答案3

更改会etc\hosts立即生效。如果不起作用,则说明您编辑了错误的文件(例如,您正在远程工作,并且意外选择了错误的 SMB 安装服务器),或者有病毒干扰。请检查病毒扫描程序是否是最新的,并检查整个系统。为了安全起见,请尝试使用第二个病毒扫描程序。

答案4

不幸的是,这个问题没有解决方案,也无法解释其原因。某物破坏了文件,修复它的唯一方法似乎是完全重新安装整个系统。我们已经放弃使用 Windows 作为开发平台,转而使用 Mac 和 Linux。

相关内容