![Файлы HOSTS в Windows 7 постоянно возвращают разрешение на «ТОЛЬКО ДЛЯ ЧТЕНИЯ»](https://rvso.com/image/1417146/%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B%20HOSTS%20%D0%B2%20Windows%207%20%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%BE%20%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D1%8E%D1%82%20%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%20%C2%AB%D0%A2%D0%9E%D0%9B%D0%AC%D0%9A%D0%9E%20%D0%94%D0%9B%D0%AF%20%D0%A7%D0%A2%D0%95%D0%9D%D0%98%D0%AF%C2%BB.png)
Как штатный веб-разработчик, я постоянно добавляю поддельные домены в свой файл HOSTS в Windows 7, чтобы указать домен на мой локальный веб-сервер, на котором я разрабатываю.
Я даже создал симпатичный небольшой PHP-скрипт, который позволяет мне ввести доменное имя, которое я хочу создать, напримертестирование.dev
Затем мой скрипт создает...
- соответствующие папки для этого нового веб-сайта в каталоге моего сервера
- Запись VirtualHosts в Apache(на самом деле используется настройка Wildcard /projects/testing.dev/www/)
- Создает базу данных MySQL
testing.dev
и связывает пользователя MySQL с этой новой базой данных. - Наконец, у меня есть небольшой EXE-файл, который передается в переменной «testing», а затем редактирует мой файл HOSTS Windows и добавляет запись в новой строке, например, так...127.0.0.1 тестирование.devчто затем позволяет мне получить доступ к моему новому сайту проекта в браузере по адресуhttp://testing.dev
Эта настройка работала замечательно в течение последних 2 лет, но недавно моя EXE-программа перестала работать... При проверке, если я перейду в папку C:\Windows\System32\drivers\etc
и просматриваю свойства файла hosts
в этой папке, первая проблема, которую я вижу, — этотолько для чтенияфлажок установлен, что не позволяет моей простой exe-программе изменять файл hosts и добавлять новые записи.
Затем мне нужно снять отметку «только для чтения» и вручную добавить изменения в новый файл hosts и сохранить, что затем работает нормально. Весь смысл наличия пользовательской .exe-программы, которая принимает 1 параметр (доменное имя), заключается в том, чтобы иметь возможность создавать скрипты, подобные этому, для автоматизации редактирования моего файла hosts и включения его в рабочие процессы, как это сделал я.
Каждый раз, когда я меняю этот параметр, снимая отметку со свойства «Только для чтения» и применяя/сохраняя его, через несколько минут он, кажется, снова становится отмеченным!
Я был бы очень признателен за любую помощь в сохранении моего неотмеченного статуса, есть ли у кого-нибудь идеи, предложения или, что еще лучше, реальное решение моей проблемы?
Также хочу отметить, что у меня нет никаких брандмауэров или программ безопасности, которые могли бы это сделать, и не запущено никаких сторонних программ, которые могли бы это вызвать.
Спасибо за любую помощь.
решение1
Возможно, эта проблема вызвана тем, что это делает какая-то другая программа. Я бы рекомендовал очистить все ваши временные файлы и посмотреть, решит ли это вашу проблему. Надеюсь, это помогло, в противном случае это может быть что-то в вашем реестре.
решение2
Попробуйте изменить атрибуты с помощью CMD. Запустите компьютер в безопасном режиме с командной строкой.
Тип
cd C:\Windows\System32\drivers\etc (нажмите Enter)
attrib C:\Windows\System32\drivers\etc\hosts -r (нажмите Enter)
далее проверьте, отмечен ли ваш файл как «только для чтения» или нет
решение3
Я не могу точно проверить, работает ли это, поскольку у меня файл не помечен как «только для чтения», как в вашем случае, но это метод, который я использовал, чтобы помешать Windows отменить мои изменения в файлах, защищенных slui.exe .
Вам нужно будет изменить разрешения файла и запретить доступ к нему SYSTEM и, возможно, TrustedInstaller (но не себе). Возможно, вам придется сделать себя владельцем файла, чтобы иметь возможность сделать это.
Перейдите в свойства > безопасность > дополнительно > изменить разрешения
Затем измените разрешения для SYSTEM и отметьте запретить запись атрибутов/расширенных атрибутов. Если это не сработает, вы можете попробовать запретить полный доступ на свой страх и риск.
Если вам нужно стать владельцем файла, чтобы сделать что-либо из этого, это можно сделать в Свойствах > Безопасность > Владелец > Изменить.
Наконец, в качестве последнего средства, вы можете заставить программу снимать отметку «только для чтения» всякий раз, когда она изменяет файл. Я не знаю PHP, поэтому не могу помочь с этим. Вы можете попробовать команду, предложенную в ответе Стивена.
решение4
Может быть, это не строгий ответ, но мне кажется, что вы пытаетесь переделать колодец :)
Установить ларагона (https://laragon.org/) в качестве вашего сервера wamp (вместо apache/php или что у вас там)
Laragon решил эту проблему (для любой папки, которую вы создаете в проекте, автоматически создается поддельный домен)
Я также разработчик PHP, и поверьте мне, все проблемы с Apache/расширением PHP/версиями PHP и доменами .local исчезли с появлением Laragon.