Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для BKPB

Старожил


Сообщения: 172
Благодарности: 6

Профиль | Отправить PM | Цитировать


Обнаружил небольшую проблемку и есть её решение, но нужна помощь т.к я в этом не силён.

Проблема такая, в коде нет снятия защиты с hosts,
обнаружил я это не сразу т.к у себя я её снял и поэтому код на моём ПК работал, а вот на других не вносит изменения.
Скрытый текст
@ECHO OFF
REM Файл для обработки
SET "WORK_FILE=%SystemRoot%\System32\drivers\etc\hosts"
REM Список блокируемых доменов через запятую
SET "BLOCK_DOMAIN=domain1.com,domain2.ru,domain3.net"
FOR %%i IN (%BLOCK_DOMAIN%) DO CALL :WORK "%%~i"
GOTO :EOF
:WORK
FINDSTR /B /I /C:"127.0.0.1" "%WORK_FILE%"|FINDSTR /I /C:"%~1"||(
ECHO 127.0.0.1 %~1>>"%WORK_FILE%"
)
GOTO :EOF


Вот код для снятия защиты, заменив в нём -R на +R защита восстанавливается.
Возможно в нём что то лишнее.
Скрытый текст
@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


Помогите сделать так, чтобы перед внесением изменений защита снималась, а после обратно восстанавливалась.
Можно конечно запускать их по очереди, но хотелось бы чтобы это было одним файлом.
А то сейчас приходится использовать три файла сценария,
один снимает защиту, второй вносит изменения, третий возвращает защиту.

Последний раз редактировалось BKPB, 25-06-2017 в 22:32. Причина: Правка


Отправлено: 13:44, 25-06-2017 | #11