Файлы HOSTS в Windows 7 постоянно возвращают разрешение на «ТОЛЬКО ДЛЯ ЧТЕНИЯ»

Файлы HOSTS в Windows 7 постоянно возвращают разрешение на «ТОЛЬКО ДЛЯ ЧТЕНИЯ»

Как штатный веб-разработчик, я постоянно добавляю поддельные домены в свой файл 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.

Связанный контент