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