Windows 8、Acer Aspire M 筆記型電腦。
檔案C:\Windows\SysWOW64\msi.dll
已損壞(使用十六進位編輯器查看,前 0x4000 位元組為零)。這可能是由於硬碟錯誤造成的。此損壞的檔案會阻止其他各種程式執行,例如 MS Outlook。
如何恢復該文件的工作版本?
運行sfc /scannow
確實注意到了問題,但表示無法修復它;該CBS.log
文件顯示:
2014-09-01 20:51:48, Info CSI 000005fb Hashes for file member \SystemRoot\WinSxS\wow64_microsoft-windows-installer-engine_31bf3856ad364e35_6.3.9600.17198_none_fe869f30bbe12810\msi.dll do not match actual file [l:14{7}]"msi.dll" :
Found: {l:32 b:KJdGPdPAioESHNMhDPmtJmU3JUt41bgkewkNvS9O41w=} Expected: {l:32 b:eC+L/SyQlvUf0W5fDBePZ46JrV54jXjWmUYbms9v8rA=}
2014-09-01 20:51:48, Info CSI 000005fc [SR] Cannot repair member file [l:14{7}]"msi.dll" of Microsoft-Windows-Installer-Engine, Version = 6.3.9600.17198, pA = PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 (10), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, hash mismatch
但是,如果我sfc /scanfile=c:\windows\syswow64\msi.dll
從提升的 運行(或實際上指定任何文件名,甚至是不存在的文件)cmd
,錯誤訊息會立即出現在控制台視窗中:
Windows Resource Protection could not perform the requested operation.
然後在命令提示字元出現之前有 5 秒的暫停。
根據各個網站的建議,我檢查了服務中的“Windows Modules Installer”是否為“手動”和“正在運行”,確實如此。我嘗試停止並重新啟動此服務,但它從未停止(它只是保持在“停止”狀態,直到我下次重新啟動)。
如果我啟動到恢復控制台命令提示字元並嘗試sfc
它會給出一個錯誤,表示它無法執行此操作,因為掃描正在等待(抱歉,我沒有寫下確切的錯誤訊息)。
我對進行系統還原持謹慎態度,因為它還可能回滾其他更改,我更願意找到一種方法來修復一個文件(以及 CBS.log 中提到的少數其他文件),而不是採取如此激烈的做法步。
更新:正如評論中所建議的,我已經msi.dll
從KB2918614
wow64_microsoft-windows-installer-engine_31bf3856ad364e35_6.3.9600.17198_none_fe869f30bbe12810
.
但是,透過 C:\Windows\SysWOW64\msi.dll 複製該檔案會出現錯誤「您需要 TrustedInstaller 的權限」。
C:\Windows\WinSxS\wow64_microsoft-windows-installer-engine_31bf3856ad364e35_6.3.9600.17198_none_fe869f30bbe12810\msi.dll
依照描述取得所有權後將文件複製到這裡成功,但這不會導致 SysWOW64 中的版本更新(因此讀取 SysWOW64 中的版本的 MS Outlook 仍然無法運行,並提示 msi.dll 已損壞)。
如何成功使用新檔案更新 SysWOW64 版本?