hosts文件如何修改-需要先拿到文件写入权限

hosts文件如何修改-需要先拿到文件写入权限

前几天浏览器加载页面一直卡着,翻帖子的时候看到有人提hosts文件如何修改,想着试着调一下,没料到开头就卡在权限这块,折腾快一个小时才勉强把内容写进去。

一开始根本没多想,直接顺着路径找到那个文件,C盘Windows下面的system32,再到drivers,etc文件夹,里面那个不带后缀的hosts,双击点开,默认用记事本打开,敲完内容,点保存,弹窗直接跳出来,说权限不足,没法改动。当时以为是记事本的问题,换了别的文本编辑器打开,结果还是一样的提示,反复试了三四回,每一次保存都会被拦下来。

网上好多说法,有的说直接改文件属性,取消只读,我右键看了一眼,只读那栏本来就没勾选,改了也没用。还有的说复制一份到桌面,改完再替换回去,这个法子我后面试了,倒是能把内容写在桌面副本里,但是往原文件夹粘贴的时候,系统又弹出权限确认,点确认之后,文件倒是替换成功了,只是那时候我还不知道,这么做完之后,后面想再调整内容,依旧要走一遍复制替换的流程,没法直接编辑原文件。

后来才反应过来,不是文件锁死了,是普通打开方式没有管理员权限。关掉记事本,右键记事本图标,选择以管理员身份运行,再从记事本里面通过打开文件的选项,一层层进到etc文件夹,右下角文件类型那里要选所有文件,不然hosts会看不见,选中打开之后,这时候敲内容,保存就不会报权限错误了。这只是我的个人感受,不是标准答案。

里面的格式也容易搞错,每一行前面是IP地址,空一格,再写域名,开头的行都是注释,系统不会读取,我最开始多加了好几个空格,一行里面塞了两个域名,改完之后刷新页面,一点变化都没有,还以为是修改没生效,反复重启浏览器,来回核对半天,才发现是排版乱了,删掉多余内容,一行只留一组IP和域名,才慢慢看到效果。

改完hosts不是立刻起效的,这点我之前完全没概念。浏览器就算关掉重开,缓存还在,页面依旧加载旧的记录。有人说直接重启电脑,我嫌麻烦,查了下可以用命令刷新缓存,打开cmd,敲ipconfig/flushdns,敲完回车,提示成功之后,再去访问对应的地址,改动才真正起作用。

也不敢随便乱加条目,随手抄别人贴出来的一大段内容,往里面塞了很多陌生域名,保存之后,上网开始断断续续,有的网站打不开,排查好久,一点点删掉新加的行,才恢复正常。之后再改,都是只加一两条,改完立刻测试,出问题就马上撤回,不会一次性堆一大堆规则进去。

还有一个小地方,保存的时候别手滑另存为,一旦另存为,记事本会自动给它加上.txt后缀,变成hosts.txt,系统识别不到这个文件,等于白改。保存的时候,文件名那里就写hosts,编码选ANSI,不要选UTF-8,我之前选错编码,文件直接失效,排查半天都找不到缘由。

做完这些之后,我也没有一直留着这些自定义条目,只是临时用来调整访问,用完之后,就把新加的行删掉,恢复成系统默认的样子,避免之后自己忘了,长时间放着,后续出问题找不到源头。

到现在也只是会简单的增删单行内容,复杂的用法一点都没碰,总觉得这个文件牵连着系统解析,稍微弄错一点,上网就容易出状况,胆子不大,每次改动前,都会先复制一份hosts文件存到别的地方备份,万一改崩了,直接拿备份替换回去,不用到处找原始文件。