msi.dll を修復する方法

msi.dll を修復する方法

Windows 8、Acer Aspire M ラップトップ。

ファイルC:\Windows\SysWOW64\msi.dllが破損しています (16 進エディタで表示すると、最初の 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 秒間待機します。

さまざまな Web サイトで提案されているように、サービスで「Windows モジュール インストーラー」が「手動」かつ「実行中」になっていることを確認しました。そのとおりです。このサービスを停止して再起動しようとしましたが、停止しませんでした (次に再起動するまで「停止中」の状態のままでした)。

回復コンソールのコマンド プロンプトを起動して実行しようとすると、sfcスキャンが保留中のため実行できないというエラーが表示されます (申し訳ありませんが、正確なエラー メッセージを書き留めていませんでした)。

システムの復元を行うと他の変更もロールバックされる可能性があるため、その極端な手順を実行するのではなく、1 つのファイル (および 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 バージョンを新しいファイルで正常に更新するにはどうすればよいですか?

関連情報