2012-05-09
KB2686509の適用失敗についてのメモ。多分罠は2つ
本日のMicrosoft UpdateにてKB2686509の適用に失敗した。多分Windows Updateの時代を含めて初めて失敗したので、記録を残しておく。
http://support.microsoft.com/kb/2686509 を読むと、こんな記述がある。
This update enumerates all the keyboard layout files that are registered on your computer, and then it verifies that they are all in the %Windir%\System32 folder.
http://support.microsoft.com/kb/2686509
どうもKB2686509は適用時にこんなことをやっている模様。
%Windir%\KB2686509.log の中に堂々と「RegQueryValueEx」だなんて名前が出てくるので、レジストリの中身を舐めているのは間違いないと思う。
同ページの他のセクションから推測するに、以下のレジストリキーがチェック対象らしい。
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layout
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layouts
このキー以下(サブキーを含む)の値を片っ端からチェックしているのではないかと思う。
このチェックは「レジストリに登録されているものの、%Windir%\System32 以下に現物が存在しないキーボードレイアウトファイルを炙り出す」という目的で行っていて、且つこのチェックによって更新が失敗することはMicrosoftも想定済み(むしろそうなることが目的?)なようで、先程のページにも色々と記述がある。
この場合は %windir%\Faultykeyboard.log が生成されているので、参考にして修正を行う。ページには「足りないキーボードレイアウトファイルを %Windir%\System32 にコピーする(但しコピーする前にそのファイルが信頼に足るものか確認してね)」的なことが書いてあるが、これみたいに「該当するファイルを使用しているレジストリエントリを削除」でもOKらしい。
さて、ここからは推測(という名の妄想)混じり。
Microsoft Updateしたらageるスレ 72を見ていると「キーボードレイアウトを変更していると失敗する」という書き込みがある。
Windows XPにはレジストリを弄ってキーボードレイアウトを変更するというネタがあって、それが「HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layout」直下に「Scancode Map」という名前で値を設定する、という方法だ*1。
今回のKB2686509にとって「Scancode Map」は予期しない値で、予期しない値がレジストリに存在する為に更新に失敗する(そういうロジックで更新プログラムが実装されている)のではないだろうか? だから一旦その値そのものを削除(値を空にするのではなく)してから更新すると成功する――と考えると辻褄が合う気がする。
「予期しない」という言葉を使ったのは http://support.microsoft.com/kb/2686509 にこのようなケースに対する対応策が書かれてないから。「Scancode Map」があって失敗した場合は %windir%\Faultykeyboard.log は生成されない*2し、仮に生成されたとしても原因は「キーボードレイアウトファイルが無い」ではないので役に立たない。
しかもどちらが原因でもエラーコードは同じなんだよなあ。
という訳でKB2686509に失敗した場合は、
この順番に二段構えぐらいで臨むべきかと思う。
ちなみに私のPCは「Scancode Map」があって失敗。この値のみのバックアップは作成済みなので、値を削除してからMicrosoft Updateをかけて、後でリストアした。合計4台なので面倒だった。
- 938 http://www.google.co.jp/url?sa=t&rct=j&q=KB2686509&source=web&cd=8&ved=0CJwFEBYwBw&url=http://d.hatena.ne.jp/eel3/20120509/1336572042&ei=anuqT4iRKqb-mAWi46yLBA&usg=AFQjCNELXU8MYwNjlwinwuNQe57G3U1eog
- 456 http://www.st.ryukoku.ac.jp/~kjm/security/memo/
- 207 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CLoBEBYwAw&url=http://d.hatena.ne.jp/eel3/20120509/1336572042&ei=bx-rT-n6BOPImAXEkrnhBA&usg=AFQjCNELXU8MYwNjlwinwuNQe57G3U1eog
- 179 http://okwave.jp/qa/q7472421.html
- 145 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=3&ved=0CGYQFjAC&url=http://d.hatena.ne.jp/eel3/20120509/1336572042&ei=5Y6qT-PHNc2KmQXv9MyaBQ&usg=AFQjCNELXU8MYwNjlwinwuNQe57G3U1eog
- 103 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CGcQFjAC&url=http://d.hatena.ne.jp/eel3/20120509/1336572042&ei=MnyqT87fCaO6iQfJodShAw&usg=AFQjCNELXU8MYwNjlwinwuNQe57G3U1eog&sig2=ZWeNUfSLYSaI88BFHeUtLw
- 100 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/eel3/20120509/1336572042
- 95 http://www.google.co.jp/url?sa=t&rct=j&q=KB2686509+失敗&source=web&cd=1&ved=0CEsQFjAA&url=http://d.hatena.ne.jp/eel3/20120509/1336572042&ei=S32qT7iaL6TDmQXkwv2VBA&usg=AFQjCNELXU8MYwNjlwinwuNQe57G3U1eog
- 86 http://search.yahoo.co.jp/search?p=KB2686509&search.x=1&fr=top_ga1&tid=top_ga1&ei=UTF-8
- 80 http://www.bing.com/search?q=KB2686509&src=IE-SearchBox&FORM=IE8SRC