更新プログラムの適用に 0x80070020 エラーで失敗する場合の対処

本記事の最新版をフォーラムにて紹介しております。

記事の改訂が含まれる場合がございますので、フォーラムの情報を参照してください。
フォーラムへのリンク


こんにちは、Setup / Deployment サポート チームです。
今回は、更新プログラムの適用時に 0x80070020  (ERROR_SHARING_VIOLATION) のエラーで失敗する事象と、その対処方法について、ご紹介いたします。同様の事象を経験されている場合、こちらの情報を参考にしていただければ幸いです。 

Windows Server 2012 R2 および Windows 8.1 では、ネイティブ イメージ タスクと呼ばれる Windows タスクが実装されています。
具体的なタスク名は、以下です。

  \Microsoft\Windows\.Net Framework\.NET Framework NGEN v4.0.30319
  \Microsoft\Windows\.Net Framework\.NET Framework NGEN v4.0.30319 64

 

このタスクは .NET におけるネイティブ イメージを事前に作成するためのタスクです。
このタスクの動作と、更新プログラムを適用処理がバッティングすると 0x80070020 (ERROR_SHARING_VIOLATION) のエラーが発生し、更新プログラムの適用が失敗してしまう場合があります。

 この事象はタイミングの問題であるため、時間を少し置いてから、更新プログラムの適用いただくか、以下のように手動でネイティブ イメージを作成し、その後に、更新プログラムを適用してください。 

~ 手順 ~

    1) コマンド プロンプトを [管理者として実行] で起動します。   
   2) 下記のコマンドを実行し、ネイティブ イメージを手動で作成します。

    ngen.exe update /force
 
   3) 終了後、更新プログラムの適用を行います。

なお、更新プログラムの適用が 0x80070020 (ERROR_SHARING_VIOLATION) エラーで失敗した場合、 その更新プログラム (あるいは、置き換え関係のある新しいバージョンの更新プログラム) を再起動後に適用しようとすると、0x800f0831 (CBS_E_STORE_CORRUPTION) エラーに変わり、失敗してしまうことがあります。
これは、インストールに失敗した更新プログラムの適用が途中まで進み、不完全な状態でインストールされていることが原因となっている可能性があります。
適用済み更新プログラムの一覧にインストールに失敗した更新プログラムが表示されている場合は、事前に、この更新プログラムをアンインストールしてから再度、適用をお試しください。

また 0x80070020 (ERROR_SHARING_VIOLATION) のエラーは、前述のタスクとのバッティング以外にも、様々なアプリケーションとバッティングして発生する可能性があります。
上記の手順で対応しても、同様の事象が繰り返し発生するようであれば、問題の切り分けとして 3 rd Party 製品の一時的なアンインストールなどもお試しください。
なお、クライアン OS の場合は後述する “クリーン ブート” による切り分けが有効である場合もございます。

  <参考技術情報>
ネイティブ イメージ タスク
https://msdn.microsoft.com/ja-jp/library/hh691779.aspx

 Windows でクリーン ブートを実行する方法
https://support.microsoft.com/ja-jp/help/929135/how-to-perform-a-clean-boot-in-windows
(但し、クライアント OS に限定される手順となります )