我最近更改了 Hosts 文件以阻止 Windows 7 中的某些网站。现在我认为它阻止了很多未添加到 Hosts 文件中的其他网站。有什么方法可以避免这种情况吗?
我尝试用我在网上找到的一些新 Hosts 文件替换它,但什么也没改变。一些网站被重定向到 IIS7。我做错了什么?
答案1
实际位置由以下注册表项定义:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
除了 DNS 客户端服务(见下文)之外,无需打开、调整或更改任何设置。Windows 会自动查找 HOSTS 文件是否存在,如果找到,则首先检查 HOSTS 文件中是否有您刚刚请求的网页条目。127.0.0.1 被视为您计算机的位置,因此当请求条目(例如)“ad.doubleclick.net”时,您的计算机会认为 127.0.0.1 是文件的位置。当找不到此文件时,它会跳到下一个文件,因此广告服务器被阻止加载横幅、cookie 或一些不道德的 ActiveX 或 JavaScript 文件。
如果您想知道,这一切都发生在几微秒内,这比尝试从半个地球外获取文件要快得多。HOSTS 文件的另一个重要功能是它是一个双向文件,这意味着如果某些寄生虫确实进入了您的系统(通常与其他产品捆绑在一起),只要存在必要的条目,罪魁祸首就无法逃脱(呼叫回家)。这就是为什么保持 HOSTS 文件最新很重要的原因。
大多数情况下,较大的 HOSTS 文件(超过 135 kb)会降低机器的速度。
要解决此问题(手动),请打开“服务编辑器”:
- 开始 > 运行 >(类型)
services.msc
- 向下滚动到“DNS 客户端”,右键单击并选择:属性 - 单击停止
- 单击“启动类型”下拉箭头
- 选择:手动(推荐)或禁用
- 单击“应用/确定”并重新启动
当设置为手动时,您可以看到上面的“服务”不需要(稍微浏览一下 - 设置为手动时),方法是再次打开服务编辑器,向下滚动到 DNS 客户端并检查“状态”列。它应该是空白的;如果需要,它会在该列中显示“已启动”。
更好的 Windows 7/Vista 解决方法是添加两个注册表项来控制 DNS 缓存的保存时间。
- 刷新现有的 DNS 缓存
- 开始 > 运行(类型)
regedit
导航到以下位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
- 单击编辑 > 新建 > DWORD 值(类型)
MaxCacheTtl
- 单击编辑 > 新建 > DWORD 值(类型)
MaxNegativeCacheTtl
- 接下来右键单击
MaxCacheTtl
条目(右窗格)并选择:修改并将值更改为 1 - 该条
MaxNegativeCacheTtl
目的值应该已经为 0(保持原样 - 参见屏幕截图) - 关闭 Regedit 并重新启动
- 与往常一样,您应该始终在编辑之前备份注册表;请参阅“导出注册表文件”下的 Regedit 帮助