![Windows 7 HOSTS ファイルのアクセス許可が読み取り専用に戻り続ける](https://rvso.com/image/1417146/Windows%207%20HOSTS%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E8%A8%B1%E5%8F%AF%E3%81%8C%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E5%B0%82%E7%94%A8%E3%81%AB%E6%88%BB%E3%82%8A%E7%B6%9A%E3%81%91%E3%82%8B.png)
フルタイムの Web 開発者として、私は開発に使用しているローカルホスト Web サーバーにドメインを指定するために、Windows 7 HOSTS ファイルに偽のドメインを継続的に追加しています。
私は、作成したいドメイン名を入力できる素敵な小さなPHPスクリプトを作成しました。たとえば、テスト開発
私のスクリプトは次に作成します...
- 私のサーバーディレクトリ内のこの新しいウェブサイト用の適切なフォルダ
- Apache の VirtualHosts レコード(実際にはワイルドカード設定 /projects/testing.dev/www/ を使用します)
- MySQLデータベースを作成し
testing.dev
、この新しいDBにMySQLユーザーを関連付けます - 最後に、変数「testing」に渡される小さな .EXE ファイルがあり、それが Windows HOSTS ファイルを編集し、次のような新しい行にエントリを追加します...127.0.0.1 テスト開発ブラウザで新しいプロジェクトサイトにアクセスできるようになります。http://testing.dev
この設定は過去2年間、驚くほどうまく機能していましたが、最近、.EXEプログラムが機能しなくなりました...検査時にフォルダを参照してこのフォルダ内のファイルC:\Windows\System32\drivers\etc
のプロパティを表示するとhosts
、最初に問題が見つかります。読み取り専用チェックボックスがオンになっているため、単純な exe プログラムで hosts ファイルを変更して新しいエントリを追加することはできません。
次に、読み取り専用のチェックを外し、新しいホスト ファイルの変更を手動で追加して保存する必要がありますが、これで問題なく動作します。1 つのパラメータ (ドメイン名) を受け取るカスタム .exe プログラムを使用する主な目的は、このようなスクリプトを作成して、ホスト ファイルの編集を自動化し、私が行ったようにワークフローに組み込むことができるようにすることです。
読み取り専用プロパティのチェックを外してこの設定を変更し、適用/保存するたびに、数分以内にチェックが入った状態に戻ってしまうようです。
未チェックの状態をそのまま維持するための助け、アイデア、提案、さらには私の問題に対する本当の解決策があれば、本当にありがたいです。
また、このような動作を引き起こすようなファイアウォールやセキュリティ プログラムは一切使用しておらず、このような動作を引き起こすようなサードパーティ製のプログラムも実行していません。
ご協力ありがとうございます
答え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 を知らないので、これについてはお手伝いできません。Stephen の回答で提案されているコマンドを試してみてください。
答え4
厳密な答えではないかもしれませんが、井戸を再び開けようとしているのだと思います :)
laragonをインストールします(https://laragon.org/) を WAMP サーバーとして使用します (Apache/php などの代わりに)
Laragon はそれを解決しました (プロジェクトで作成したフォルダーごとに、自動的に偽のドメインが作成されます)
私もPHP開発者ですが、Apache/PHP拡張/PHPバージョンと.localドメインに関するすべての問題はLaragonで解決しました。