3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

Microsoft UpdateでWord/Excelビューアのパッチ当てたら関連付けを勝手に変更された

ターミナルサーバで、メインのOffice suiteとしてOpenOfficeを使用してます。

が、なぜか Word/Excelビューアも入ってます。

doc,xlsファイルの関連付けはOpenOfficeに設定しているのですが、WindowsUpdateでWord/Excelビューアのセキュリティパッチを当てたら、勝手に全ユーザの関連付けを変更しやがりました。

doc,xlsファイルをビューアーで開くようにされてしまったのです。

(ユーザが個別に設定して場合は影響有りませんでした)

フォルダオプションで設定してもいいのですが、ユーザ単位の設定となってしまっては面倒なので、レジストリを直接触ることにしました。

で、参考にさせてもらったのが、Windows の関連づけ設定の仕組みです。

これを見ると、ユーザごとの関連付け(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\)が最優先で動くようです。

今回、パッチによって変更されていたのは HKEY_CLASSES_ROOT\* (Basic Class Key)でした。

(ちなみに、HKEY_CLASSES_ROOT は HKEY_LOCAL_MACHINE\Software のサブキーです。)

ビューアで開く関連付けファイルだと以下のようになってました。

(エキサイトブログのダメ仕様上一部.の前に半角スペースを置いています。実際は半角スペースを.の前の半角スペースを削除してください)

HKEY_CLASSES_ROOT\.doc

(既定)=Wordview.Document .8

"Content Type"="application/msword"

HKEY_CLASSES_ROOT\.xls

(既定)=ExcelViewer.Sheet.8

HKEY_CLASSES_ROOT\.docx

(既定)="Word.Document .12"

"Content Type"="application/vnd.openxmlformats-officedocument .wordprocessingml.document"

HKEY_CLASSES_ROOT\.pptx

(既定)="PowerPointViewer.Show.12"

これを以下のように修正したら、全ユーザでOpenOfficeで開くようになりました。(個別設定しているユーザ以外)

HKEY_CLASSES_ROOT\.doc

(既定)=OpenOffice.org.Doc

削除 → "Content Type"="application/msword"

HKEY_CLASSES_ROOT\.xls

(既定)=OpenOffice.org.Xls

HKEY_CLASSES_ROOT\.docx

(既定)=OpenOffice.org.Docx

削除" → "Content Type"="application/vnd.openxmlformats-officedocument .wordprocessingml.document"

HKEY_CLASSES_ROOT\.xlsx

(既定)=OpenOffice.org.Xlsx

HKEY_CLASSES_ROOT\.pptx

(既定)="OpenOffice.org.Pptx"

この(既定)の値は、ProgID Key というものらしく、HKEY_CLASSES_ROOT\OpenOffice.org.Doc にアイコンや実際の動作の挙動が書いているようです。

関連付けは結構厄介ですね。

参考:

OKWave:ファイルの「関連付け変更」は、どこに記録されるの?