【解決方法】Windows Server 2012 R2で.NET Framework 4.7.2インストール時の0x80092004エラーを修正する
0x80092004エラーとは
Windows Server 2012 R2環境で、オンラインおよびオフラインのインストーラーを使って.NET Framework 4.7.2をインストールしようとした際に、「0x80092004 – Cannot find object or property(オブジェクトまたはプロパティが見つかりません)」というエラーが発生することがあります。同時に、イベントビューアーのログには「Couldn't find the hash of component: NetFx4-PenIMC(コンポーネントNetFx4-PenIMCのハッシュが見つかりません)」というエラーも記録されます。
調査の結果、この問題の原因は、すでにシステムにインストールされている.NET Framework 3.5(またはその更新プログラム)に存在する不具合であることがわかりました。この破損状態が.NET Framework 4.7.2のインストールを妨げているのです。原因の特定までにかなりの時間を要しましたが、ここでは実際に効果のあった解決策を詳しく紹介します。
解決方法:更新プログラムを手動でダウンロードして適用する
0x80092004(CRYPT_E_NOT_FOUND)エラーを修正するには、Microsoft Update Catalogから.NET Frameworkの更新パッケージを手動でダウンロードし、DISMコマンドで適用します。
- Microsoft Update Catalogで検索:
https://www.catalog.update.microsoft.com にアクセスし、「KB4340558」を検索します。 - 対象の更新プログラムを選択:
「2018-07 Security and Quality Rollup for .NET Framework 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 for Windows 8.1 and Server 2012 R2 for x64 (KB4340558)」を選択します。 - MSUファイルをすべてダウンロード:
3つのMSUファイルのダウンロードが提案されるので、すべてダウンロードして c:\Distr\update フォルダーに保存します。windows8.1-kb4338415-x64_cc34d1c48e0cc2a92f3c340ad9a0c927eb3ec2d1.msu
windows8.1-kb4338419-x64_4d257a38e38b6b8e3d9e4763dba2ae7506b2754d.msu
windows8.1-kb4338424-x64_e3d28f90c6b9dd7e80217b6fb0869e7b6dfe6738.msu
- MSUファイルを展開する:
以下のコマンドを実行して、MSUファイルの中身を展開します。expand -f:* c:\Distr\update\*.msu c:\Distr\update\extract
- DISMでCAB更新プログラムを統合する:
展開先の C:\Distr\update\extract フォルダーには複数のファイルが生成されますが、必要なのはCABファイルのみです。DISMツールを使って、CAB形式の更新プログラムを稼働中のWindowsイメージに統合します(再起動を求められた場合は指示に従って再起動してください)。dism /online /add-package /packagepath:"C:\Distr\update\extract\Windows8.1-KB4338415-x64.cab"
dism /online /add-package /packagepath:"C:\Distr\update\extract\Windows8.1-KB4338419-x64.cab"
dism /online /add-package /packagepath:"C:\Distr\update\extract\Windows8.1-KB4338424-x64.cab"
dism /online /add-package /packagepath:"C:\Distr\update\extract\WSUSSCAN.cab" - エラーが出た場合の対処法:
CABファイルの適用中に0x80092004エラーが表示された場合は、まず以下のコマンドで該当する更新プログラムをアンインストールします(例:KB4338419の適用中にエラーが発生した場合)。dism /online /remove-package /packagepath:"C:\Distr\update\extract\Windows8.1-KB4338419-x64.cab"
続けて、同じCABファイルをもう一度インストールします。dism /online /add-package /packagepath:"C:\Distr\update\extract\Windows8.1-KB4338419-x64.cab"
筆者の環境では、KB4338419についてこの「インストール→削除」の操作を2回繰り返したところ、0x80092004エラーが完全に消えました。 - .NET Framework 4.7.2をインストールする:
サーバーを再起動し、改めて.NET Framework 4.7.2のインストールを実行します。今度はエラーなく正常に完了するはずです。作業が終わったら、C:\Distr\update フォルダー内の一時ファイルは忘れずに削除しておきましょう。
まとめ
このエラーの根本原因は、既存の.NET Framework 3.5コンポーネントのハッシュ情報の破損にあります。Microsoft Update Catalogから取得した累積的なセキュリティ更新プログラム(KB4340558)をDISMで強制的に再適用することで、破損したコンポーネントストアが修復され、新しいバージョンの.NET Frameworkをインストールできるようになります。
なお、この問題と解決手順はWindows 8.1だけでなく、Windows 8でも同様に有効です。Windows Server 2012 R2やWindows 8.1で.NET Frameworkのインストールに失敗する場合は、ぜひ本記事の手順を試してみてください。
-
【完全解説】.NET Framework 3.5 インストールエラー 0x800f0922 の修正方法
.NET Framework 3.5 のインストールエラーコード 0x800f0922 の修正方法:このエラーが表示されると、.NET Framework をインストールできず、インストールや更新を試みるたびにエラーコード 0x800f0922 が発生してしまいます。 原因はひとつだけではありません。単純にコントロールパネルから .NET Framework 3.5 が有効化されていないことが原因の場合もありますが、PC の環境構成はユーザーごとに異なるため、この記事では問題を解決できる可能性のある対処法をすべてご紹介します。 .NET Framework 3.5 インストールエラー 0x8
-
【解決済み】Windows Server 2016で.NET Framework 3.5インストールエラー「0xc004000d」を修正する方法
Windows Server 2016で.NET Framework 3.5(.NET Framework 2.0および3.0を含む)をインストールする際に、エラーコード「0xc004000d」が表示されることがあります。このエラーは、Windowsが必要なインストールファイルを見つけられない、またはダウンロードできない場合に発生します。この記事では、Windows Server 2016における.NET Framework 3.5のインストールエラー「0xc004000d」を解決するための手順と、利用可能なすべての方法を詳しくご紹介します。 「指定されたサーバーで機能の追加または削除の要求に