批量替换windows hosts文件

批量替换windows hosts文件

我正在创建一个批处理脚本来替换主机文件:

%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文件,不需要attribcacls不需要。

只需使用:

copy /v /y "%HOMEDRIVE%\test\hosts" "%WinDir%\system32\drivers\etc\hosts"

相关内容