更新プログラムの適用に 0x80070020 エラーで失敗する場合の対処
本記事の最新版をフォーラムにて紹介しております。
記事の改訂が含まれる場合がございますので、フォーラムの情報を参照してください。
フォーラムへのリンク
こんにちは、Setup / Deployment サポート チームです。
今回は、更新プログラムの適用時に 0x80070020 (ERROR_SHARING_VIOLATION) のエラーで失敗する事象と、その対処方法について、ご紹介いたします。同様の事象を経験されている場合、こちらの情報を参考にしていただければ幸いです。
Windows Server 2012 R2 および Windows 8.1 では、ネイティブ イメージ タスクと呼ばれる Windows タスクが実装されています。
具体的なタスク名は、以下です。
このタスクは .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 に限定される手順となります )