最近、Excel 2003で.xlsファイルをオープンするのが遅くなったと感じていたら、それは「Officeファイル検証」アドインの副作用かもしれない。その対策は?
対象アプリケーション:Excel 2003
普段と同じようにExcel 2003でファイルをオープンしようとしたら、内容が表示されるまで妙に時間がかかる。従来は数秒で表示されていたのに、いまは数十秒〜数分も待たされる。すべてのファイルで遅いわけではないが、ほかのPCでも同じ症状に悩んでいるユーザーがいる。でも特にExcelの設定を変えた憶えはない…… 2011年4月以降にExcel 2003でこうした症状が発生しているなら、それは「Officeファイル検証(Office File Validation)」という機能が原因かもしれない。本稿では、この機能によってExcelブックのオープンに時間がかかる現象について、その回避方法などを説明する。
Officeファイル検証機能とは、マイクロソフトが開発したOffice向けセキュリティ対策の1つで、Office文書のオープン時にその内部構造を検証することでウイルス感染などの攻撃を未然に阻止するものだ。この機能はOffice 2010には標準で組み込まれているが、2011年4月からOffice 2003/Office 2007でも専用アドインを組み込むことで利用できるようになった。このアドインは2011年6月末から自動更新で配布され始めたので、多くのPCで6月以降のセキュリティ・パッチなどと一緒にインストールされただろう。
Officeファイル検証の詳細については、次のマイクロソフトの解説ページを参照していただきたい。
マイクロソフトの「日本のセキュリティチーム」によれば、2007年からの4年間で同社に報告されたOfficeの脆弱性のうち、80%以上はOfficeファイル検証機能によって回避可能だったとのことだ。
つまり、このアドインを組み込んでおけば、パッチ未公開のOfficeの脆弱性を狙った攻撃があっても、被害を受けずに回避することが大いに期待できそうだ。
しかしその一方で、Officeファイル検証機能では、次の条件をすべて満たした場合にExcelブックのオープンにひどく時間がかかることがあるという副作用が明らかになっている。
(1) Excel 2003を利用している
(2) Officeファイル検証アドインがインストール済みである
(3) 対象のExcelブックは.xlsファイルである
(4) 対象のExcelブックはネットワーク共有フォルダに格納されている
(5) Excel 2003の本体であるEXCEL.EXEのファイル・バージョンが、11.0.8332.0以上である
(6) Officeの主要ファイルの1つであるMSO.DLLのファイル・バージョンが、11.0.8333.0以上である
(2)については、コントロール・パネルの[プログラムの追加と削除]アプレット(Windows Vista以降では「プログラムと機能」アプレット)で「Microsoft Office File Validation Add-In」というプログラムが表示されれば、Officeファイル検証アドインはインストール済みである。
また(5)については、セキュリティ・パッチMS11-021またはMS11-045が適用済みの場合に該当する。(6)については、セキュリティ・パッチMS11-023が適用済みの場合に該当する。要するに最新のOffice向けセキュリティ・パッチが適用済みなら、(5)と(6)の条件には合致しているはずだ。
上記の条件をすべて満たしたとき、Excelブックのオープンがどれくらい遅くなるのか実際に測定してみた。
Officeファイル検証アドイン | .xlsファイルの場所 | オープンにかかった時間 |
---|---|---|
未インストール | ネットワーク共有 | 4秒 |
インストール済み | ネットワーク共有 | 2分55秒 |
インストール済み | ローカル・ドライブ | 4秒 |
Officeファイル検証アドインの有無による.xlsファイルのオープンにかかる時間の差 Officeファイル検証を組み込むと、ネットワーク共有上のファイルをオープンするのが非常に遅くなることが分かる。なお、テストに用いたのは、サイズが3.84Mbytesで3枚のシートからなる.xlsファイル。またWindows Server 2003 R2 SP2+Office Professional 2003の環境に、7月末までの全セキュリティ・パッチを適用した。 |
この例では、Officeファイル検証アドインをインストールすると、.ネットワーク共有上のxlsファイルのオープンに40倍以上の時間がかかるようになってしまった。ただし、.xlsファイルによってはほとんど変わらないこともあったので、必ず遅くなるとは限らないようだ。とはいえ、よく利用する.xlsファイルをオープンするのに、いままで数秒だったのが数十秒〜数分もかかるようになっては、業務に大きな悪影響を与えてしまいかねない。
この現象に対してマイクロソフトは改善に取り組んでいるとのことだが、執筆時点でまだ解消方法は明らかになっていない。その代わり、本件について説明しているサポート技術情報2575312では、次の回避策が挙げられている。
(a) .xlsファイルをネットワーク共有からいったんPCのローカル・ドライブにコピーしてからオープンする
(b) Excel 2007またはExcel 2010でオープンする
(c) Officeファイル検証機能を無効化する
しかし(a)は運用方法が変わるため、ユーザーが難色を示すこともあるだろう。また(b)はOfficeのアップグレードが必須なので、そう簡単ではない。現実的には(c)を選ばざるを得ないことが多いだろう。ただし、当然のことながら、(少なくともExcelについては)Officeファイル検証機能がリリースされる前と同レベルまで、セキュリティ対策のレベルが下がってしまうことは認識しておくべきだ。マイクロソフトによる解消策が公開されたら速やかに適用しつつ、Officeファイル検証機能を再び有効化できるようにしておきたい。
さて、マイクロソフトは、Excel 2003での検証機能のみを無効化し、ほかのOfficeアプリケーションについては検証機能を有効のままにしておく手段を用意している。以下ではその手順を説明しよう。また、再び有効化する方法にも触れる。
Officeファイル検証機能を簡単に無効化するには、マイクロソフト提供の「Fix it」を利用するとよいだろう。Fix itとは、特定の不具合を回避するために用意される応急措置的なプログラムのことで、マイクロソフトのサポート技術情報のページからダウンロードできる。本件について説明しているサポート技術情報のページでも、Fix itのプログラムが配布されている。
このページの「回避策」セクションにある「Fix it」というアイコンをクリックすると、Officeファイル検証機能のうち、Excelブックの検証だけを無効化するFix itのプログラム「MicrosoftFixit50741.msi」がダウンロードできる。
問題の症状が生じているPCに、普段Excelを利用しているユーザー・アカウントでログオンしてから、ダウンロードしたMicrosoftFixit50741.msiを実行する。ウィザードが起動してライセンス条項の画面が表示されるので、内容を確認して[同意する]チェックボックスをオンにし、[次へ]ボタンをクリックする。するとExcelブックの検証機能を無効化するためのレジストリ・エントリが追加され(このエントリの詳細はこの後に説明する)、数秒で「Microsoft Fix it は処理されました」という完了の画面が表示される。[閉じる]ボタンをクリックすれば作業は完了だ。
作業が完了したら、Excel 2003を起動してネットワーク共有上の.xlsファイルを開いてみよう(システムの再起動などは不要)。オープンにかかる時間はOfficeファイル検証アドインをインストールする前と同程度に短くなるはずだ。
■MicrosoftFixit50741.msiの利用上の注意点
このプログラムによって無効化されるのは、Excel 2003でExcelブックをオープンする際の検証機能に限られる。そのほかのOfficeアプリケーションやOffice文書の検証機能は有効のままだ。
また、対象のPCで複数のユーザーがExcel 2003を利用する場合、該当するユーザー・アカウントごとにログオンしてこのプログラムを実行する必要がある。
無効化したExcelブックの検証機能を再び有効化することは、このプログラムではできず、レジストリを書き換える必要がある(その手順はすぐ後で説明する)。
Fix itを利用せずにOfficeファイル検証機能を無効化するには、手動で次のレジストリ・エントリを追加する必要がある。あらかじめ、Excelを利用するユーザー・アカウントでログオンしてから作業すること。
[注意]
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ・エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。
項目 | 内容 |
---|---|
キー名 | HKEY_CURRENT_USERの Software\Policies\Microsoft\Office\11.0\Excel\Security\FileValidation |
値の名前 | EnableOnLoad |
型 | REG_DWORD |
値の内容 | 0: 検証しない 1: 検証する 2: オブジェクト・モデル経由の呼び出しを除いて検証する(デフォルト) |
Excelブックの検証機能を無効化/有効化するためのレジストリ・エントリ このキーは存在しないので、新たに作成する必要がある。無効化する場合は「0」を指定する。有効な状態に戻すには「1」か「2」を指定するほか、値EnableOnLoadを削除してもよい。 |
上記のレジストリ・キーを作成してから、DWORD型の値EnableOnLoadに「0」を設定すると、Excel 2003でExcelブックをオープンしたときに検証されなくなる。有効な状態に戻すには「1」か「2」を設定するか、あるいは値EnableOnLoadを削除する。
このレジストリ設定は、ログオンしているユーザー・アカウントだけに影響する。もし、ほかのユーザーがExcelを利用する場合には、そのユーザー・アカウントでログオンして上記設定を再度しなければならない。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.