1

Я создаю пакетный скрипт, который заменяет файл 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 по умолчанию?

заранее спасибо

2 ответа2

2

Чтобы ответить на вопрос о разрешениях, вы можете отозвать 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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .