如何修復 msi.dll

如何修復 msi.dll

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.dllKB2918614 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 版本?

相關內容