Показать полную графическую версию : [решено] Восстановление файла Hosts или очистка от внесённых записей
Нужен vbs(предпочтительней) или cmd для очистки ранее внесённых в hosts адресов для блокировки
Пожалуйста помогите
так как файл пустой, то смысла из него что-то удалять нет - проще перезаписать
del c:\windows\system32\drivers\etc\hosts /F /Q
@echo off > c:\windows\system32\drivers\etc\hosts
или
copy %path_to_original_hosts_file%\hosts c:\windows\system32\drivers\etc\hosts /Y
Удалять бы я не стал — сменится владелец. Просто:
>nul copy nul "%SystemRoot%\system32\drivers\etc\hosts"
или:
>nul copy "Путь к ранее сохранённому оригинальному файлу\hosts" "%SystemRoot%\system32\drivers\etc\hosts"
В старых ОС, до Vista, там ещё не был закомментирован localhost.
del c:\windows\system32\drivers\etc\hosts /F /Q
@echo off > c:\windows\system32\drivers\etc\hosts
После этой команды файл hosts стал пустым.
Извините за вопрос.
А как выполнить эту команду: >nul copy nul "%SystemRoot\system32\drivers\etc\hosts"
это сценарий или скрипт. Пробовал как .cmd, результата нет.
Вот файл .vbs с помощью которого я вношу изменения:
Domains = Split("www.facebook.com facebook.com vkontakte.ru www.vkontakte.ru vk.com www.vk.com www.rutube.ru rutube.ru www.youtube.com youtube.com")
With CreateObject("Scripting.FileSystemObject")
Set F = .GetFile(.GetSpecialFolder(1) & "\drivers\etc\hosts")
End With : A = F.Attributes
All = F.OpenAsTextStream(1).ReadAll
If (A And 1) = 1 Then F.Attributes = A - 1 : T = 1
With New RegExp
.MultiLine = True : .IgnoreCase = True
For Each Dom In Domains
.Pattern = "^(0\.0\.0\.0|121\.0\.0\.1)[\t ]" & Replace(Dom, ".", "\.") & "\b"
If Not .Test(All) Then _
With F.OpenAsTextStream(8) .WriteLine "121.0.0.1 " & Dom : .Close : End With
Next
End With : If T Then F.Attributes = A
Может можно сделать такой же, но для отката или очистки hosts
Пробовал как .cmd, результата нет. »
Я пропустил второй символ «%». Поправил предыдущее сообщение.
Может можно сделать такой же, но для отката или очистки hosts »
BKPB, коллега cameron уже сказала, что оригинальный файл hosts — пустой (в новых ОС), за исключением комментариев. На WSH можно тупо открыть его для записи как TextStream и сразу же закрыть. Можно взять оригинальное содержимое в конкретной ОС и записывать его. Как угодно.
После этой команды файл hosts стал пустым. »
он и был пустым ;)
там всё с # начиналось.
Теперь >nul copy nul "%SystemRoot%\system32\drivers\etc\hosts" отработал нормально
он и был пустым
там всё с # начиналось. »
Я и имел ввиду # , просто, что он может быть совершенно чистым без # я не знал (Windows 10)
Помогите ещё, если это не слишком сложно.
Можно как нибудь конвертировать .cmd в .vbs
Суть в том, что нужно с помощью .vbs снять защиту с hosts
и после внесения изменений с помощь фрагмента .vbs
снова восстановить защиту.
У меня есть для этого два .cmd
Снимает защиту:
@echo off
cd /d "%windir%\system32\drivers"
cd etc
Call :GrantAccess hosts
attrib -R hosts
goto :eof
:GrantAccess
takeown /f "%~1"
echo y|cacls "%~1" /g %username%:f
exit /b
Восстанавливает защиту:
@echo off
cd /d "%windir%\system32\drivers"
cd etc
Call :GrantAccess hosts
attrib +R hosts
goto :eof
:GrantAccess
takeown /f "%~1"
echo y|cacls "%~1" /g %username%:f
exit /b
а мне нужно в .vbs т.к изменения вносятся с помощью .vbs
Domains = Split("www.facebook.com facebook.com vkontakte.ru www.vkontakte.ru vk.com www.vk.com www.rutube.ru rutube.ru www.youtube.com youtube.com")
With CreateObject("Scripting.FileSystemObject")
Set F = .GetFile(.GetSpecialFolder(1) & "\drivers\etc\hosts")
End With : A = F.Attributes
All = F.OpenAsTextStream(1).ReadAll
If (A And 1) = 1 Then F.Attributes = A - 1 : T = 1
With New RegExp
.MultiLine = True : .IgnoreCase = True
For Each Dom In Domains
.Pattern = "^(0\.0\.0\.0|121\.0\.0\.1)[\t ]" & Replace(Dom, ".", "\.") & "\b"
If Not .Test(All) Then _
With F.OpenAsTextStream(8) .WriteLine "121.0.0.1 " & Dom : .Close : End With
Next
End With : If T Then F.Attributes = A
поэтому хочется чтобы это было одним файлом
Я и имел ввиду # »
Это и есть комментарии, они просто пропускаются обработчиком.
У меня есть для этого два .cmd
Снимает защиту:
…
Восстанавливает защиту:
»
Первый снимает атрибут ReadOnly с файла, второй — устанавливает. Плюс оба сбрасывают текущего владельца и разрешения безопасности и пытаются устанавливать владельцем текущего пользователя и дать ему полные права. Никакой «защитой» там и не пахнет.
У меня под Windows 7 атрибута ReadOnly на файле нет, владельцем является «NT AUTHORITY\SYSTEM», право на изменение есть у данной учётной записи и у встроенной группы Администраторы. Категорически не вижу никакого смысла что-либо здесь трогать, особенно в том виде, как это сделано в приведённом Вами коде, ибо ничего из описанного для правки не требуется. Совсем. Как в более новых ОС, кто там владелец, какие там права — не знаю, коллеги подскажут, если что изменилось, тогда и будем смотреть.
Ответ по существу — да, сделать можно. Смысла делать — пока не вижу.
Спасибо за помощь.
Вопрос решён.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.