FC2ブログ
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
WindowsUpdateが出来ない
本当に久しぶりの更新です。

仕事はしているんですが、なかなか書く時間が無くて・・・
って言うか、文才が無いから書けないのが本当のところなんですけど。。。

さて、「WindowsUpdateが出来ない」という事でご依頼を頂きました。
OSはWindows7 64bit。
試しにWindowsUpdateを実行すると、エラーが表示されて更新ができません。

updateエラー画面

=================================
新しい更新プログラムを検索できませんでした
このコンピュータで利用できる新しい更新プログラムを確認中にエラーが発生しました。
エラーコード 800F0900 Windows Update で不明なエラーが発生しました。
=================================

以下のmicrosoftコミュニティにも書き込みを見つけました。

Windows7 新しい更新プログラムを検索できませんでした(800F0900)


ここで指示されている方法は

・Fix itの実行
・システム更新準備ツールのインストール
・Catroot2 フォルダの再構築
・Windows Update のコンポーネントをリセット
・サポートに電話する

などを試したようですが、結局リカバリになってしまったようで問題の解決にはならなかったようです。

それでは・・・と言うことで、まずはSFCユーティリティでチェックしてみます。

コマンドプロンプトを管理者として実行。
そして以下のコマンドを入力し、SFCユーティリティを実行します。

sfc /scannow

sfc


しかし、エラーは検出されませんでした。
そこで以下のサイトから「システム更新準備ツール」をダウンロードし、実行してみました。

システム更新準備ツール ダウンロード

システム更新準備ツールはWindowsUpdateに関する不具合を自動で修復してくれますが、修復できない場合もあります。
そういうときはログファイルを見て、手動で修復する必要があります。

今回はwindows7 64bitなのでサイズは500MB以上。
光回線なら何も問題はありませんが、遅い回線を使っているとちょっと辛いですね。

インストール終了まではソレなりの時間(20~30分程度?)かかりましたが問題なく終了。
しかしインストールに問題なくても、チェックでエラーが出ている可能性があります。
そこで以下のログファイルを開き、エラーを確認します。

C:\Windows\Logs\CBS\CheckSUR.log

いくつかのエラーが検出されましたが、一部はシステム更新準備ツールにより修復されたようです。
念のためもう一度「システム更新準備ツール」を起動し、再度ログファイルを確認。
以下のような状態になりました。

=================================

Checking Windows Servicing Packages

Checking Package Manifests and Catalogs

(f) CBS MUM Corrupt 0x800F0900 servicing\Packages\WUClient-SelfUpdate-Core-CoreComp~31bf3856ad364e35~amd64~ja-JP~7.6.7600.256.mum Line 1: FILE0

Checking Package Watchlist

Checking Component Watchlist

Checking Packages

Checking Component Store

(f) CSI Manifest Failed Catalog Check 0x00000000 winsxs\Manifests\amd64_microsoft-windows-w..pdateclient-activex_31bf3856ad364e35_7.6.7600.256_none_66110e7f0b087d75.manifest amd64_microsoft-windows-w..pdateclient-activex_31bf3856ad364e35_7.6.7600.256_none_66110e7f0b087d75

Summary:

Seconds executed: 628

Found 2 errors

CSI Manifest Failed Catalog Check Total count: 1

CBS MUM Corrupt Total count: 1

Unavailable repair files:

winsxs\manifests\amd64_microsoft-windows-w..pdateclient-activex_31bf3856ad364e35_7.6.7600.256_none_66110e7f0b087d75.manifest
servicing\packages\WUClient-SelfUpdate-Core-CoreComp~31bf3856ad364e35~amd64~ja-JP~7.6.7600.256.mum
servicing\packages\WUClient-SelfUpdate-Core-CoreComp~31bf3856ad364e35~amd64~ja-JP~7.6.7600.256.cat

=================================

どうやら、ファイルがいくつか壊れているようです。
(Unavailable repair files:の所の3つのファイル)

ちなみに、全てのファイルはC:\windows\の中にあるそれぞれのフォルダ内にありました。
(例えば、winsxs\manifests\amd64_・・・であれば、C:\windows\winsxs\manifests\amd64_・・・です)

さてと・・・
ファイルが壊れているんなら、ディスクのエラーチェックをすれば良いんじゃない?

(世間では「windowsのディスクエラーチェックは、ファイルを壊すだけで修復には何の役にも立たない」なんてことを言われていますが、それは「使い方」です。使い方によっては簡単だし、とても便利なツールです。
状況を見極め、使う場所を選ぶのが大切なんです。)

と言うわけでディスクのエラーチェックを実行。

結果、いくつかのエラーが発見され、修復は正常に行われたようです。
しかし、WindowsUpdateを実行すると、相変わらずエラーを表示してしまいます。

直っていませんねぇ。。。

これはもうリカバリしか・・・
いや、破損したファイルを正常な物に入れ換えれば良いんじゃない?

そこで、Windows7のインストールディスクの中を確認してみましたが、それらしいファイルはありません。
自分がチェック用に使っているパソコン(Windows7 64bit)の中を見てみると・・・ありました。
同名のファイルがちゃんとあります。
これをコピーすることにします。

まずは必要なファイルをUSBメモリにコピー。
そして不具合の出ているパソコンにコピー・・・と行きたいところですが、対象のフォルダ内にコピーしようとすると、「システムの許可が必要」とか出てアクセスが拒否されてしまいます。

属性や権限を変えてしまえば出来るんでしょうけど、その辺はあまりいじりたくありません。

そこでWindows7のインストールディスクで不具合のあるパソコンを起動し、システムの修復を選択。
コマンドプロンプトを開いて対象のフォルダに移動し、破損したファイルの拡張子を.bakに変更。
そこへコピーしてきた対象ファイルをコピーしました。

全部で3ファイル。
ファイル名が長いので間違いが無いか確認が面倒ですが、対象の3ファイルを置き換えることができました。

通常通りwindowsを起動し、まずはシステム更新準備ツールを実行。
終了後、先ほどと同じようにログファイルを確認すると・・・

=================================

Checking Windows Servicing Packages

Checking Package Manifests and Catalogs

Checking Package Watchlist

Checking Component Watchlist

Checking Packages

Checking Component Store

Summary:

Seconds executed: 667

No errors detected

=================================

見事、全てのエラーが消えました。

WindowsUpdateを起動してみると、ちゃんと更新できます。
最終的に、何の問題もなく以下の状態まで行くことが出来ました。

update_正常

めでたし、めでたし。
何の問題も無く、WindowsUpdateが出来るようになりました。
何となく「反則技」みたいな気もしますが、細かいことは気にしますまい。(ぉ

しかし今回の方法、同じWindowsが無いとどうにもなりません。
念のためWindows7 32bitとWindows8.1 64bitを確認しましたが、同名のファイルは存在しませんでした。
Windows7 64bitには、Windows7 64bitと言うことです。
(Home とか Professional の区別があるかは未確認。この違いはたぶん無い・・・かな?)

ただ、不具合の出たファイルのバージョンを見ると1つ前のWindowsUpdate用(?)みたいです。
だから、「対応するレジストリの削除で何とかなっちゃうかも?」とも思いました。
ただそれは、「もうリカバリしか・・・」と言う時の最終手段ですね。

と言うわけで、WindowsUpdateの不具合は解消しました。
ディスクのクリーンアップや外回りの清掃をし、最終的な動作チェックをしてお客様にお渡ししました。

不具合がなくなってパソコンの動きが良くなったような・・・いや、気のせいですかね?


スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。