我正在创建一个批处理脚本来替换主机文件:
%WinDir%\system32\drivers\etc\hosts
我要用备份我在特定路径中拥有:
批处理脚本(以管理员权限运行):
%homedrive%\test\hosts-replace.bat
内容:
attrib -s -h -r "%WinDir%\system32\drivers\etc\hosts"
copy /v /y "%HOMEDRIVE%\test\hosts" "%WinDir%\system32\drivers\etc\hosts"
attrib +s +h +r "%WinDir%\system32\drivers\etc\hosts"
问题是我不确定这是否足够, 自从bleepingcomputer.com建议在替换之前运行此命令(但该网站没有解释如何撤销该命令或其目的):
echo,Y|cacls "%WinDir%\system32\drivers\etc\hosts" /G everyone:f
问题:用批处理脚本替换 hosts 文件并将 hosts 文件的权限重置为默认值的正确方法是什么?
提前致谢
答案1
要回答权限问题,您可以everyone
使用以下方法撤销访问权限:
echo,Y|cacls "%WinDir%\system32\drivers\etc\hosts" /e /r everyone
由于每个人都是一组,因此这样做的副作用是撤销所有权限,因此您应该完全重置权限。 简单的方法是删除 hosts 文件,而不是将其复制到自身,这将重置父文件夹分配的权限。 只要文件etc
夹的权限没有被混淆,您应该可以这样做:
del /f "%WinDir%\system32\drivers\etc\hosts"
copy /v "%HOMEDRIVE%\test\hosts" "%WinDir%\system32\drivers\etc\hosts"
仅使用copy /y
不会删除并重新创建文件,因此不会将权限重置为默认值。
答案2
这些都不是必需的。管理员可以修改该hosts
文件,不需要attrib
或cacls
不需要。
只需使用:
copy /v /y "%HOMEDRIVE%\test\hosts" "%WinDir%\system32\drivers\etc\hosts"