Windows 7 HOSTS 檔案不斷將其權限還原為唯讀

Windows 7 HOSTS 檔案不斷將其權限還原為唯讀

作為一名全職 Web 開發人員,我不斷在我的 Windows 7 HOSTS 檔案中新增假域名,以將網域指向我在其上進行開發的本機主機 Web 伺服器。

我甚至建立了一個漂亮的小 PHP 腳本,可以讓我輸入我想要創建的域名,例如測試.dev

然後我的腳本創建...

  • 我的伺服器目錄中適合這個新網站的資料夾
  • Apache 中的 VirtualHosts 記錄(實際上使用通配符設定/projects/testing.dev/www/)
  • 建立一個 MySQL 資料庫testing.dev並將 MySQL 使用者連結到這個新資料庫
  • 最後,我有一個小的 .EXE 文件,它在變數“testing”中傳遞,然後它編輯我的 Windows HOSTS 文件並在新行上添加一個條目,如下所示...127.0.0.1 測試.dev然後我可以在瀏覽器中造訪我的新專案網站:http://testing.dev

這個設定在過去的兩年裡工作得非常好,但最近我的 .EXE 程式停止工作...經過檢查,如果我瀏覽到該資料夾C:\Windows\System32\drivers\etc並查看該資料夾中文件的屬性hosts,我看到的第一個問題是只讀複選框被選中,這不允許我的簡單 exe 程式修改主機檔案並新增我的新條目。

然後,我必須取消選取唯讀並手動新增新的主機檔案變更並儲存,然後就可以正常運作了。擁有一個採用 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(但不是您自己)的存取。您可能需要讓自己成為該文件的擁有者才能執行此操作。

轉到屬性>安全性>高級>更改權限
然後編輯系統的權限並檢查拒絕寫入屬性/擴充屬性。如果這不起作用,您可以嘗試拒絕其完全控制,風險由您自行承擔。

如果您需要取得檔案的所有權來執行任何操作,請在「屬性」>「安全性」>「擁有者」>「編輯」中

最後,作為最後的手段,您可以在程式修改檔案時取消唯讀標記。我不懂 PHP,所以我無法幫助您。您可以嘗試史蒂芬的回答中建議的命令。

答案4

也許這不是一個嚴格的答案,但我認為你試圖重新進入井:)

安裝拉拉貢(https://larragon.org/)作為您的 wamp 伺服器(而不是 apache/php 或您那裡的伺服器)

Laragon 已經解決了這個問題(對於您在專案中建立的任何資料夾,都會自動為其建立 fakedomain )

我也是 php 開發人員,相信我,apache/php 擴充/php 版本和 .local 網域的所有問題都已以 laragon 結束

相關內容