連載
» 2014年06月09日 18時00分 UPDATE

山市良のうぃんどうず日記(7):セーフモードでもWindows Updateしたい[その1]

コミュニティフォーラムのやりとりで「ソフトのインストールに失敗する」「更新したら正常に動かない」といったトラブルに、「セーフモードで試してみて」というアドバイスはありそうですね。でも、やってみれば分かりますが、それは簡単ではないかもしれませんよ。

[山市良,テクニカルライター]
「山市良のうぃんどうず日記」のインデックス

連載目次

セーフモードの制限でソフトやパッチのインストール/削除ができない理由

 Windowsの起動オプションの1つである「セーフモード」は、Windowsの実行に必要な基本的なドライバーとサービスのみでPCを起動する、トラブルシューティング用の“制限されたOS環境”です。Windows 7以前やWindows Serverであれば、PCの起動直後に[F8]キーを押すことでセーフモードでの起動を選択できます(画面1)。

画面1 画面1 PCの起動直後に[F8]キーで表示されるメニューから「セーフモード」を選択する(Windows XPの場合)

 Windows 8およびWindows 8.1をセーフモードで起動するには、[F8]キーではなく、別の方法になります。今回はその別の方法については説明しません(詳しくは『Windows TIPS:Windows 8を「確実に」セーフモードでブートさせる』を参考にしてください)。

 なお、[F8]キーによる割り込みは、Windows 8やWindows 8.1で廃止されたわけではなく、神業的にミリ秒単位でタイミングよく[F8]キーを押すことに成功すれば不可能ではないようです(*1)。そんな神業をお持ちの方はいないと思うので、事実上、不可能ということです。

 Windows XPは製品サポートライフサイクルが終了しましたが、Windows Server 2003やWindows Server 2003 R2のトラブルシューティングで役に立つかもしれませんし、Windows Vista以降との違いも知ってもらいたいので、今回はWindows XPを中心に話を進めます。もちろん、まだWindows XPを使い続けているという人にも参考になれば、それに越したことはありません。

 さて、正常に動作しなくなったPCをセーフモードで起動できたとして、問題が疑われるソフトウェアや更新プログラムをアンインストールしようとしても失敗することがあります(画面2)。あるいは、マイクロソフトが提供する修復ツール「Microsoft Fix it」(更新プログラムが提供されるまでの回避策を簡単に行ってくれるツール)を実行しようとしても、恐らく失敗するでしょう。

画面2 画面2 セーフモードでは、Windowsインストーラーでインストールされたソフトウェアのアンインストールが失敗する

 Windows向けのソフトウェアや更新プログラム、修復ツールは、「Windowsインストーラー形式」(.msi)または「Windows Updateスタンドアロンインストーラー形式」(.msu)で提供されることがあります。しかし、これらの形式をセーフモードで実行することは、基本的にはできません。なぜなら、これらのインストールやアンインストールの前提となるサービスが、セーフモードでは開始することが許可されていないからです(画面3)。

画面3 画面3 セーフモードでは、Windowsインストーラー形式(.msi)を使用したソフトウェアや更新のインストール、修復ツールの実行も失敗する

 「OSやソフトウェアのインストールや更新にどうしても失敗する」「OSを更新したら正常に動かなくなった」といったトラブルに対するアドバイスとしては、まずは「クリーンブート」(*2)をお勧めするのが親切でしょう。クリーンブートで起動した環境なら、前提サービスの開始が制限されることはありません。

セーフモードでもサービス開始制限を解除すればOK

 クリーンブートでもダメだという場合に、ようやくセーフモードの出番となります。先ほど、セーフモードでは「前提サービスの開始が制限される」といいましたが、制限を解除してあげればよいのです。

 具体的には、レジストリの以下のキーの下に、許可したいサービスのサービス名のキーを作成し、既定の値エントリのデータに「Service」と設定すればよいのです。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal


 Windowsインストーラー形式(.msi)の実行に必要なのは、以下のサービス(かっこ内はサービス名)です。このサービスをセーフモードで許可します(画面4)。

  • Windows Installer(MSIServer)
画面4 画面4 レジストリを操作して「Windows Installer」(MSIServer)サービスを許可すると、Windowsインストーラー形式のインストールやアンインストールが可能になる

 「レジストリエディター」(Regedit.exe)で操作してもよいのですが、コマンドプロンプトから次のコマンドラインを実行することでレジストリを作成することもできます。

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\MSIServer /ve /d Service


 念のため、レジストリを元の状態に戻すコマンドラインも教えておきましょう。

REG DELETE HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\MSIServer /f


 セーフブートでWindowsインストーラーを利用可能にする方法は、古くから知られたWindowsのトラブルシューティングテクニックの1つです。以下はちょっと古いサポート技術情報になりますが、ある更新プログラムのインストール後に正常起動しなくなったWindows Server 2003をセーフモードで起動して解決する手順として、この方法が説明されています。

XPで「システム管理者によって、ポリシーは……」と表示され失敗する

 Windows XPやWindows Server 2003、Windows Server 2003 R2では、Windowsインストーラーのためのサービスを許可しても、Windowsインストーラー形式のファイル実行時に次のようなメッセージが表示される場合があります(画面5)。これは、OS標準のWindowsインストーラー(msiexec.exe)のセーフモードにおける不具合のようです。

システム管理者によって、ポリシーはこのインストールを実行できないように設定されています。

画面5 画面5 Windows XP SP3標準のWindowsインストーラーのバージョンは3.1。このバージョンの場合、セーフモードでおかしな挙動をする。バージョン4.5に入れ替えることで問題は解消する

 この問題は、「Windowsインストーラー4.5」をインストールすることで解消できます。幸運なことに、Windowsインストーラー4.5は実行ファイル形式(.exe)なので、セーフモードでもインストール可能です。

 Windowsインストーラー4.5をインストールしても問題が解決しない場合は、それこそ本当にポリシーで制限されているのでしょう。ポリシーに対応しているWindows XP Professionalの場合は、「ローカルコンピューターポリシー」(gpedit.msc)を開いて、次のポリシーを確認してみてください。

コンピューターの構成\管理用テンプレート\Windowsコンポーネント\Windowsインストーラー\Windowsインストーラーを無効にする


コンピューターの構成\Windowsの設定\セキュリティの設定\ソフトウェア制限のポリシー


 個人でこのポリシーを設定している人は、まず、いないとは思いますが……。

Windows Updateは「セーフモードとネットワーク」で

 Windowsインストーラーと同じテクニックを用いることで、Windows UpdateやMicrosoft Updateによる更新を可能にすることもできます。ただし、「セーフモード」ではできません。Windows UpdateやMicrosoft Updateはネットワーク機能に依存するサービスであるため、「セーフモードとネットワーク」で起動する必要があります(画面6)。

画面6 画面6 Windows XPを「セーフモードとネットワーク」で起動して、Microsoft Updateを実行している様子。今後、Windows XPに対する新しい更新が来ることはありませんが、毎月恒例の「悪意のあるソフトウェアの削除ツール」を検出し、無事適用できた

 Windows UpdateやMicrosoft Updateのために、「セーフモードとネットワーク」で次のサービスを許可するようにレジストリを構成します。

  • Windows Installer(MSIServer)
  • Windows Update(wuauserv)
  • Background Intelligent Transfer Service(BITS)
  • COM+ Event System(EventSystem)

 Microsoft Officeアプリケーション(クイック実行版を除く)の更新に対応するには、さらに次のいずれかのサービスを許可します。前者は32bit版Microsoft Office、後者は64bit版Microsoft Officeの場合です。

  • Office Source Engine(ose):32bit版Microsoft Officeの場合
  • Office 64 Source Engine(ose64):64bit版Microsoft Officeの場合

 コマンドプロンプトからサービスの許可を設定するには、次の5つのコマンドラインを実行します。レジストリキーの場所が「\SafeBoot\Minimal」ではなく「\SafeBoot\Network」になっている点に注意してください。これにより「セーフモード」ではなく、「セーフブートとネットワーク」のための構成になります。

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\MSIServer /ve /d Service

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\wuauserv /ve /d Service

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\BITS /ve /d Service

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\EventSystem /ve /d Service

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\ose /ve /d Service(または、REG ADD HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\ose64 /ve /d Service)


Windows Vista以降ではWindows Updateできない?

 Windows VistaおよびWindows Server 2008以降は、通常、Windowsインストーラー形式(.msi)ではなく、「Windowsスタンドアロンインストーラー形式」(.msu)で更新プログラムが配布されます。Windowsスタンドアロンインストーラー(Wusa.exe)は、Windows Updateサービスに依存するため、Windowsスタンドアロンインストーラー形式(.msu)の更新プログラムをインストールするには、「セーフモードとネットワーク」で起動し、Windows Updateの関連サービスを許可しなければなりません。

 同じ設定で、Windows VistaおよびWindows Server 2008以降のWindows Updateも実行可能になります。でも、そう簡単にはいきませんでした。Windows VistaやWindows Server 2008以降を「セーフモードとネットワーク」で起動する機会があったら、是非とも「コントロールパネル」を開いてみてください。そこにあるはずの「Windows Update」が見つからないはずです(画面7)。この謎の原因と対策については、次回に説明します。

画面7 画面7 「セーフモードとネットワーク」で起動したWindows 7 SP1。「コントロールパネル」に「Windows Update」が見当たらない!
「山市良のうぃんどうず日記」バックナンバー

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Hyper-V(Oct 2008 - Sep 2014)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手がける。個人ブログは『山市良のえぬなんとかわーるど』。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。