Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

修正プログラムのインストールの順番を調査する

解説をスキップして操作方法を読む

デジタルアドバンテージ 小林 章彦
2008/07/25
対象OS
Windows 2000
Windows XP
Windows Server 2003
修正プログラム(パッチ)の適用によって不具合が発生し、場合によってはパッチのアンインストールが必要になることがある。
ただしパッチは適用した逆順でアンインストールしないと、問題が発生することがある。
自動更新やWindows Update/Microsoft Updateを利用してパッチの適用を行うと適用順が分からないことがある。
dirコマンドを使えば、パッチの適用順の一覧リストを作成できる。

解説

 マイクロソフトは、Windows OSなどに脆弱性や不具合が見つかると、これを修正するための「更新プログラム(パッチ)」を公開している。このパッチを適用(インストール)することで、脆弱性や不具合が修正されるのだが、場合によってはパッチを適用したことによって新たな不具合が発生することがある。

 このような場合、アンインストールが可能なパッチならば、[コントロール パネル]−[アプリケーションの追加と削除]/[プログラムの追加と削除]を利用してアインストールすれば、パッチ適用前の状態に戻り、発生した不具合を回避できる。もちろん、パッチをアンイストールすると、脆弱性や元の不具合は復活することになるので注意が必要だ。

 問題は、パッチのアンイストールの際に適用した逆順で1つずつアンイストールしないと、システム・ファイルの不整合が起こり、システムが不安定になる可能性があることだ。

アンインストールの順番に注意

 例えば、2008年7月に提供されたDNSに関する脆弱性を解消するMS08-037(DNSの脆弱性により、なりすましが行われる)は、アンインストールに注意が必要だ。MS08-037では、DNSサーバ向けとDNSクライアント向けのそれぞれに対してパッチが提供されており、両者で同じバイナリ(DLLファイルなど)を置き換えるものになっていることから、アンインストールする際にはバイナリが正しく元の状態に戻るように、適用した逆順でアンインストールする必要がある。

 DNSサーバ向け(KB951746)→DNSクライアント向け(KB951748)の順番で適用した場合は、DNSサーバ向け(KB951746)だけをアンインストールしたい場合でも、DNSクライアント向け(KB951748)→DNSサーバ向け(KB951746)の順でアンインストールした後、DNSクライアント向け(KB951748)を再適用するという手順を行う。ここで、DNSサーバ向け(KB951746)のみをアンインストールしてしまうと、DNSクライアント向け(KB951748)がアンインストールできなくなったり、DNSサーバ向け(KB951746)しかアンインストールしていないのにもかかわらず、DNSクライアントの脆弱性も復活(脆弱性を持つ古いバイナリに戻る)したりしてしまう。

 この例は少々特殊だが、異なるパッチで同じバイナリを置き換えるような場合は、同様のことが起こる可能性がある。サービスパックのインストール前に適用したパッチをアンインストールしてしまうと、この例と同じような状況になる。

 このような危険な状況を避けるため、[アプリケーションの追加と削除]/[プログラムの追加と削除]でパッチをアンインストール(削除)しようとすると、そのパッチを適用した後にインストールしたパッチやアプリケーションの一覧が表示され、「削除するとプログラムが正しく作動しなくなる可能性がある」という警告ダイアログが表示される。ただし、適用した順番で一覧が作成されているわけではないので、何らかの方法で適用順を把握する必要がある。そこで、ここではパッチの適用順をログ・ファイルから抽出する方法を紹介する。

[プログラムの追加と削除]アプレットの画面
[プログラムの追加と削除]アプレットを開くと、適用済みのパッチ一覧を取得することができる。インストール日を見ることで適用日の確認はできるが時間までは分からないので、正確な適用順を得ることができない。
パッチの一覧を見るには[更新プログラムの表示]をチェックする必要がある。
パッチをアンインストールする場合は、[削除]ボタンをクリックすればよい。→

警告ダイアログの画面
削除対象のパッチの後に、さらに別のパッチやアプリケーションをインストールしていると、このような警告ダイアログが表示される。この一覧に表示されているのは、対象となるパッチの後でインストールされたすべてのプログラムである。そのため、パッチとは無関係な項目も多く表示されている。パッチをアンインストールする際、前述のような依存関係によって不具合が発生する危険性が高いのは、セキュリティ更新プログラムとサービスパックなので、この両者を、適用したときとは逆順でアンインストールしていけばよい。

操作方法

 パッチを適用すると、パッチごとに自動的にログ・ファイルが作成される。このログ・ファイルのタイムスタンプを調べれば、パッチの適用時刻を把握できるわけだ。具体的には、コマンド・プロンプトを開き、以下のコマンドを実行すれば、システム・ドライブ(通常はC:ドライブ)のルートに「TimeLine.log」というファイルが作成される(以下のコマンドをバッチ・ファイルとして実行すると入力ミスなどが防げるだろう)。

C:\>dir %windir%\*.log /o:d | findstr /i /r /c:q......\.log /c:kb......\.log /c:q......uninst\.log /c:kb......uninst\.log > %systemdrive%\TimeLine.log

 「TimeLine.log」は、以下のように適用日時とファイル・サイズ、ログ・ファイルの名前が並んだテキスト・ファイルとなっている。この例では、最後のKB950749.logが最も新しく適用したパッチということになる。つまり、一覧の最後から順番に目的のパッチまでアンインストールしていけば、安全にアンインストールができるというわけだ。ちなみに、KB950749といった番号は各パッチに付けられた識別番号で、[プログラムの追加と削除]アプレットなどでも、「Windows XP セキュリティ更新 (KB950749)」といったように、この番号によってパッチが識別できるようになっている。End of Article

2007/10/18  17:01             8,932 KB898461.log
2007/10/18  17:42            16,966 KB873339.log
2007/10/18  17:42            12,397 KB886185.log
2007/10/18  17:43            17,851 KB885836.log
2007/10/18  17:43            18,694 KB888302.log
2007/10/18  17:44            18,851 KB887472.log
……(中略)……
2008/04/10  13:58            13,326 KB945553.log
2008/04/10  14:00            22,341 KB948590.log
2008/04/10  14:01            17,023 KB948881.log
2008/04/10  14:50             5,252 KB943729.log
2008/05/13  11:08            14,780 KB892130.log
2008/05/14  16:18            14,876 KB950749.log
ログ・ファイルの一覧を作成するコマンドの実行例

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間