Windows 7 の SP1 が ERROR_NOT_FOUND(0x80070490) で失敗する場合の対処法

環境

背景

Windows 7 の SP 1 を当てようとすると

ERROR_NOT_FOUND(0x80070490) 要素が見つかりません

と言われて失敗してしまう。


Windows を dis ったところ、

というありがたいメンションが飛んでくるもまったく解決せず。
というか MS のフォーラムを検索しても
同じ問題が解決してるものはひとつも無い。

安易に「OS を再インストールしてください」とか言っちゃうサポートページって…。

試したこと(ダメだったこと)

MS のサポートフォーラムは信じてはいけない。

解決方法

以下の手順を実行する場合は、必ずバックアップを取ってください。

(1) コマンドプロンプトを管理者として実行し、以下のコマンドを実行。
sfc /scannow

結果

C:\Windows\system32>sfc /scannow

システム スキャンを開始しています。これにはしばらく時間がかかります。

システム スキャンの検証フェーズを開始しています。
検証 100% が完了しました。

Windows リソース保護は、整合性違反を検出しませんでした。

一見問題が無いように見えるが MS の言うことは信じてはいけない。

(2) CBS.log を確認する

C:\Windows\Logs\CBS\CBS.log を確認する。
直接は開けないので、デスクトップにコピーしてメモ帳で開く。

「Failed uninstalling driver」で検索する。

2012-05-02 14:21:21, Info                  CBS    Perf: Doqe: Uninstall started.
2012-05-02 14:21:21, Info                  CBS    Doqe: [Forward] Uninstalling driver updates, Count 60
2012-05-02 14:21:22, Info                  CBS    DriverUpdateUninstallUpdates failed [HRESULT = 0x80070490 - ERROR_NOT_FOUND]
2012-05-02 14:21:22, Error                 CBS    Doqe: Failed uninstalling driver updates [HRESULT = 0x80070490 - ERROR_NOT_FOUND]
2012-05-02 14:21:22, Info                  CBS    Perf: Doqe: Uninstall ended.
2012-05-02 14:21:22, Info                  CBS    Failed uninstalling driver updates [HRESULT = 0x80070490 - ERROR_NOT_FOUND]
2012-05-02 14:21:22, Error                 CBS    Startup: Failed while processing non-critical driver operations queue. [HRESULT = 0x80070490 - ERROR_NOT_FOUND]
2012-05-02 14:21:22, Info                  CBS    Startup: Rolling back KTM, because drivers failed.
2012-05-02 14:21:22, Info                  CBS    Setting ExecuteState key to: CbsExecuteStateStageDrivers | CbsExecuteStateFlagRollback | CbsExecuteStateFlagDriversFailed
2012-05-02 14:21:22, Info                  CBS    Progress: UI message updated. Operation type: Service Pack. Stage: 1 out of 1. Rollback.

ということでドライバのアンインストールで失敗していることがわかる。

「0x80070490」で検索しても大量に出てきてしまうので、
エラーコードは信じてはいけない。

(3) setupapi.app.log を確認する

C:\Windows\inf\setupapi.app.log を確認する

「Failed to find driver update」で検索する

!!!  sto: Failed to find driver update 'C:\Windows\WinSxS\amd64_usbvideo.inf_31bf3856ad364e35_6.1.7600.16543_none_8a1a2513d42628c3\usbvideo.inf' in Driver Store. Error = 0x00000490
<<<  Section end 2012/05/02 14:21:22.137
<<<  [Exit status: FAILURE(0x00000490)]

ということで usbvideo.inf のアンインストールで失敗していることがわかる。

(4) ドライバの上書きインストール

コマンドラインを管理者として実行し、以下のコマンドを実行する

pnputil -a C:\Windows\WinSxS\amd64_usbvideo.inf_31bf3856ad364e35_6.1.7600.16543_none_8a1a2513d42628c3\usbvideo.inf

という恐ろしい色のダイアログが表示されるが
迷わずに「このドライバーソフトウェアをインストールします」をクリックする。
MS の警告は信じてはいけない。

(5) 再起動後、SP1 を通常通り当てる

この画面を見るまでに約9ヶ月かかっているので少し泣きそうになりました。