Windows Server や Windows 10/11 で機能を追加または削除しようとした際に、「参照されたアセンブリが見つかりません。エラー: 0x80073701」という厄介なエラーが発生することは決して珍しいことではありませんが、それでもかなり面倒です。通常、これは Windows イメージ内のソースファイルが破損または不足していることを示しており、まるで終わりのないモグラ叩きゲームのように感じることがあります。そのため、適切なトラブルシューティングを行ってこのエラーを修正することで、たとえ Windows が意図的に処理を複雑にしていたとしても、機能のインストールを正常な状態に戻すことができます。
複雑な修正に取り組む前に、保留中の再起動がないか確認することをお勧めします。アップデートや機能のインストール後にシステムを再起動するだけで、新しい機能を追加できる場合があります。PowerShelldism /online /get-packages /format:table | Select-String "Pending"またはコマンドプロンプトで使用してください。「再起動が保留中」と表示されている場合は、マシンを再起動してもう一度試してみてください。それでも問題が解決しない場合は、次の手順として、イメージのクリーンアップと破損したコンポーネントの修復を行います。
Windowsでアセンブリが見つからないエラーを修正する方法
方法1: 保留中のWindowsの再起動を確認して完了する
- Windows は以前のアップデートや機能変更を完了する必要がある場合もあります。サーバー/ワークステーションを再起動し、機能のインストールを再度お試しください。多くの環境では、再起動が保留中になっていることがこのエラーの原因です。これは、Windows がまだ変更の確定を待機している状態であることを示しています。
再起動しても問題が解決しない場合は、コンポーネントストアの整合性チェックに進みます。当然ながら、Windows は必要以上に困難にしているからです。
方法2: Pending.xmlをクリアしてイメージを修復する
- 場合によっては、 C:\Windows\Winsxs\にある Pending.xml ファイルが問題の原因となることがあります。その場合は、Pending.xml.old に名前を変更してください。
rename C:\Windows\Winsxs\Pending.xml Pending.xml.old
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /RestoreHealth
方法3: システムファイルの検証と修正
- 次のステップは、
sfc /scannow問題の原因となっている可能性のあるシステムファイルをスキャンして修復する実行です。このステップは特に重要で、CBSログにシステムファイルの欠落または破損に関連するエラー(有名なKB5012170アップデートの問題など)が表示されている場合は特に重要です。 - 管理者としてコマンドプロンプトを開き、次のコマンドを実行します。
sfc /scannow
方法4: 特定のKBパッケージを手動で修正する
- KB5012170のエラーのように、ログに特定の KB 更新プログラムが欠落しているか破損していることが記録される場合があります。その場合は、 Microsoft Update カタログ (こちら)から手動で更新プログラムをダウンロードし、直接インストールしてみてください。
- 何らかの理由で MSU インストーラーを実行できない場合は、まずそれを抽出します。
expand -f:* windows10.0-kb5012170-x64.cab C:\Temp
DISM /Online /Add-Package /PackagePath:C:\Temp\windows10.0-kb5012170-x64.cab
方法5: 破損したパッケージをバイパスまたは無視する(公式には推奨されていません)
これは少しリスクがあるので、レジストリの編集に慣れていて、システムが不安定になる可能性を許容できる場合にのみ実行してください。Windowsをさらに神秘的にしてみませんか?
- レジストリ エディターregedit を開きます。
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicingに移動します。
- このキーの所有権(デフォルトの所有者はTrustedInstaller)を取得し、完全な制御権を自分に与えてください。面倒ですが、必要なことです。
- 問題のある更新パッケージに関連するレジストリキーを特定します。そのCurrentState値を0に変更します。これにより、Windowsはサービス提供時にその特定のパッケージを無視するようになります。
- 権限を復元し、PCを再起動してください。これにより、Windowsが不足しているパッケージを忘れ、後で必要なものをインストールできるようになる場合があります。
ただし、CBSログにエラーが繰り返し表示される場合(例えばERROR_SXS_ASSEMBLY_MISSING…)、問題のあるアップデートすべてに対してこの操作を行う必要があるかもしれません。「Failed to pin」を検索してくださいcbs.log。
オプション: インプレースアップグレードを実行する
他の方法がすべてうまくいかない場合、お使いのバージョンの最新のWindows ISOを使用してインプレースアップグレードを実行するのが最もクリーンな解決策となる場合があります。これは基本的に、データやアプリを失うことなくWindowsを再インストールすることになりますが、システムファイルのセットが新しくなるため、最終的に破損が修復される可能性があります。ISOからsetup.exeを実行し、「個人用ファイルとアプリを引き継ぐ」を選択して、あとは自動で処理されます。他の方法がうまくいかない場合、通常は効果的です。
全体的に見て、この混乱を解消するのは面倒ですが、忍耐強く適切なコマンドを使えば、アセンブリ不足のエラーは解消できます。なぜうまくいくのかは分かりませんが、壊れたパッケージを一つ一つ手動で追いかけるよりも、クリーンアップコマンドや新規インストールの方がうまくいく場合もあります。
まとめ
- 保留中の再起動を確認し、必要に応じて再起動します。
- Pending.xml の名前を変更し、DISM /RestoreHealth を実行します。
- 実行し
sfc /scannowてシステム ファイルを修復します。 - 問題のある更新プログラムを Microsoft から手動でダウンロードしてインストールします。
- 最悪の場合は、インプレース アップグレードを実行します。
まとめ
正直言って、これらのエラーは厄介ですが、解決可能です。保留中のファイルの削除、イメージの修正、再インストールなど、Windows にちょっとした刺激が必要なように感じることがあります。この方法が、原因の解明に役立ち、必要な機能を再インストールできるようになることを願っています。トラブルシューティングにかかる時間を大幅に節約できることを願っています。少なくとも、いくつかの環境では効果がありました。