背景
日常使用Windows的过程中,hosts(C:\Windows\System32\drivers\etc)文件可能被一些程序串改,因此在网上找到禁止/允许修改hosts文件的bat脚本,但是在使用过程中有遇到了新的麻烦,特记录下相关问题的解决方法。
禁止/允许修改hosts文件的bat脚本
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。 打开记事本,根据需要输入以下代码: 1、 禁止修改HOSTS文件: attrib +r +a +s +h %windir%\system32\drivers\etc\hosts echo y|cacls %windir%\system32\drivers\etc\hosts /g everyone:r 2、允许修改HOSTS文件: echo y|cacls %windir%\system32\drivers\etc\hosts /g everyone:f attrib -r -a -s -h %windir%\system32\drivers\etc\hosts 保存为.BAT格式后双击运行即可,当然也可以在CMD中逐条输入。注:以上内容来自百度知道--怎样防止hosts被修改
遇到的新问题-cacls拒绝访问
执行了上面的“禁止修改HOSTS文件”的脚本后,当自己想要去修改hosts文件,执行“允许修改HOSTS文件”文件时,有时候会遇到“cacls拒绝访问”的情况,导致无法获取到修改hosts文件的权限。
解决方法
终于,在 命令行修改文件/文件夹访问权限 cacls, 修改hosts内容方法 中找到了解决的方法。内容如下:
一次不小心,将移动硬盘中文件的权限做了修改,后来倒是挺顺利,再添加回去就行了。
可是,有一点点小问题,经过查询和实验,终于解决。
问题描述如下:某一个文件夹的权限还是无法让我正常使用,这时一般情况下,我只需要点开属性对话框,点击安全标签,点击“高级”在里边添加上权限,确定之后,再从安全中选中某用户,添加权限,基本就可以解决。但是,这次却有点棘手,我换了一台电脑,点开属性对话框,竟然找不到“安全”标签,不知道是它的设置问题还是因为我的是移动硬盘的缘故。总之一时半会儿我是无法使用这个文件夹了。
解决:谷歌了下下,决定用命令行方式添加该文件夹权限。
现在已经成功,将过程记录下来,一来方便自己再次遇到相同可以参考查证,二来如果有网友同我一样遇到相同问题,也可做一参考。
越来越多的用户使用NTFS文件系统来增强Windows系统的安全性。通常是在图形用户界面(GUI)的“安全”选项卡中对文件或目录访问控制权限进行设置。还有就是使用Cacls命令,它是一个命令行的命令
Cacls命令使用格式如下:
Cacls filename [/T] [/E] [/C] [/G user:perm] [/R user [...]] [/P user:perm [...]] [/D user [...]]
Filename——显示访问控制列表(以下简称ACL);
/T——更改当前目录及其所有子目录中指定文件的 ACL;
/E—— 编辑 ACL 而不替换;
/C——在出现拒绝访问错误时继续;
/G user:perm——赋予指定用户访问权限。Perm 可以是R(读取)、W(写入)、C(更改,写入)、F (完全控制);
/R user——撤销指定用户的访问权限(仅在与 /E 一起使用);
/P user:perm——替换指定用户的访问权限;
/D user——拒绝指定用户的访问。
1.查看目录和ACL
使用Cacls命令查看C盘WINDOWS目录访问控制权限。
点击“开始→运行”,运行CMD,切换到C根目录,执行“cacls WINDOWS”在窗口中就会列出各用户对WINDOWS目录的访问控制权限项目。如果想查看WINDOWS目录中所有文件访问控制权限,输入“cacls WINDOWS\ . ”命令即可。
2.修改目录和ACL
如果要修改目录和文件的访问权限,使用命令“cacls WINDOWS /t /e /c /g Administrator:f”,这样就赋予Administrator对WINDOWS文件夹完全控制权限。
如果要替换用户访问权限:使用命令“cacls WINDOWS /t /e /c /p Administrator :r ”
如果要撤销用户访问权限:使用命令“cacls WINDOWS /t /e /c /r Administrator ”
如果要拒绝用户访问:运行“cacls WINDOWS /t /e /c /d Administrator ”即可。
又一次重装系统之后,装了最新的IDM,按照网上的破解方法,修改了hosts文件,以让IDM无法联系server进行验证.
修改完毕之后,担心IDM自行修改hosts内容,从而破解失败,于是用cacls命令将hosts的权限修改的他妈都不认识它.
又一日,想要修改hosts内容做些测试,却死活都没法修改,打开也不行,直接报access isdenied,cmd命令copy也不行,再次执行cacls命令,赋予Administrator全部权限也失败.完全搞不定了,这下真的是他妈都不认识它.
最终,参考stackoverflow上一个说法,修改成功.在这里po出来供广大网友参考.
http://stackoverflow.com/questions/8619541/denied-access-to-hosts-file
cmd右键run as administrator
执行
takeown /f C:\Windows\System32\drivers\etc\hosts && icacls C:\Windows\System32\drivers\etc\hosts /grant administrators:F
然后notepad++打开,成功.
参照原文,完整命令是--
takeown /f C:\Windows\System32\drivers\etc\hosts && icacls C:\Windows\System32\drivers\etc\hosts /grant administrators:F
attrib -r -h -s C:\Windows\System32\drivers\etc\hosts
%windir%\notepad.exe C:\Windows\System32\drivers\etc\hosts