我需要重命名 Windows 7 電腦上的某個 dll(準確地說是 comctl32.dll),以便用該檔案的另一個版本取代它。
我試過:
- [在:右鍵單擊,屬性,安全性,權限,高級,所有者]將所有者更改為當前用戶,並且[在:右鍵單擊,安全性]向當前用戶授予所有可能的權限。嘗試[右鍵單擊,重新命名] - 無法重新命名,訪問被拒絕。
啟動管理指令(提升權限),並使用強制:
takeown /f comctl32.dll icacls "comctl32.dll" /grant (current user):F rename comctl32.dll comctl32.old
獲得許可被拒絕。
- 這讓我很生氣,所以我以系統使用者身分啟動了一個 shell(按照 [1] 中概述的步驟)並嘗試
rename comctl32.dll comctl32.old
在該 shell 中使用重命名該檔案。結果再次被拒絕。
我認為 Systems-shell 基本上給了我上帝模式,所以這非常令人沮喪!有人對如何重命名此文件或拒絕我訪問的內容有任何進一步的建議嗎?我完全不知所措了!
//編輯:
現在我也嘗試了Unlocker工具。它無法重命名該文件,但承諾在重新啟動後嘗試這樣做。我重新啟動了系統,但我的老朋友仍然沒有改變名字。
//編輯2:
根據反對票和評論,我想為有相同問題的其他用戶添加一行警告。僅當您知道自己在做什麼以及為什麼這樣做時才這樣做。否則你的系統可能會崩潰。
事實上,我確實知道我在做什麼:我需要替換已經損壞的檔案。我不知道該怎麼做。因此,無需提及這裡的危險或僅僅因為它而否決該問題可能對系統完整性有危險。事實上,僅僅使用一個系統最終就會對其完整性構成威脅——為什麼要懲罰同一財產的合法問題?
答案1
您無法存取它(無論您的權限如何),因為 Windows 本身正在使用它來運行。
從另一個作業系統(例如 Linux LiveCD 或 Windows 安裝磁碟)啟動並從那裡重新命名。
警告:這是一個非常糟糕的主意,並且可能會阻止您的 Windows 啟動。確保您首先進行完整備份。
答案2
如果該檔案正在被核心使用,那麼如果不先從記憶體中卸載它,就無法重命名它。例如使用 Windows 復原控制台對其進行重新命名。
如果它沒有被進程使用,那麼您可以重新命名它,但是 Windows 檔案保護可能會使用原始名稱建立副本,或者再次將其重命名回來。
部分停用 Windows 檔案保護的最快方法是,您必須刪除以下檔案:
C:/windows/system32/restore/filelist.xml
我建議您 - 除非在作業系統的測試安裝上先備份您要重命名的文件,但您也可以從 Windows CD 上的二進製文件擴展它:
expand -r filename.dl_ C:/windows/system32
這將在 system32 中建立 filename.dll,顯然您必須將 filename 替換為 dll 的檔案名稱。
或者,您可以使用 debug.exe 停用 Windows 檔案保護,但這風險更大,並且需要大約半小時