コミュニティフォーラムのやりとりで「ソフトのインストールに失敗する」「更新したら正常に動かない」といったトラブルに、「セーフモードで試してみて」というアドバイスはありそうですね。でも、やってみれば分かりますが、それは簡単ではないかもしれませんよ。
Windowsの起動オプションの1つである「セーフモード」は、Windowsの実行に必要な基本的なドライバーとサービスのみでPCを起動する、トラブルシューティング用の“制限されたOS環境”です。Windows 7以前やWindows Serverであれば、PCの起動直後に[F8]キーを押すことでセーフモードでの起動を選択できます(画面1)。
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」(更新プログラムが提供されるまでの回避策を簡単に行ってくれるツール)を実行しようとしても、恐らく失敗するでしょう。
Windows向けのソフトウェアや更新プログラム、修復ツールは、「Windowsインストーラー形式」(.msi)または「Windows Updateスタンドアロンインストーラー形式」(.msu)で提供されることがあります。しかし、これらの形式をセーフモードで実行することは、基本的にはできません。なぜなら、これらのインストールやアンインストールの前提となるサービスが、セーフモードでは開始することが許可されていないからです(画面3)。
「OSやソフトウェアのインストールや更新にどうしても失敗する」「OSを更新したら正常に動かなくなった」といったトラブルに対するアドバイスとしては、まずは「クリーンブート」(*2)をお勧めするのが親切でしょう。クリーンブートで起動した環境なら、前提サービスの開始が制限されることはありません。
クリーンブートでもダメだという場合に、ようやくセーフモードの出番となります。先ほど、セーフモードでは「前提サービスの開始が制限される」といいましたが、制限を解除してあげればよいのです。
具体的には、レジストリの以下のキーの下に、許可したいサービスのサービス名のキーを作成し、既定の値エントリのデータに「Service」と設定すればよいのです。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal
Windowsインストーラー形式(.msi)の実行に必要なのは、以下のサービス(かっこ内はサービス名)です。このサービスをセーフモードで許可します(画面4)。
「レジストリエディター」(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をセーフモードで起動して解決する手順として、この方法が説明されています。
Windows XPやWindows Server 2003、Windows Server 2003 R2では、Windowsインストーラーのためのサービスを許可しても、Windowsインストーラー形式のファイル実行時に次のようなメッセージが表示される場合があります(画面5)。これは、OS標準のWindowsインストーラー(msiexec.exe)のセーフモードにおける不具合のようです。
システム管理者によって、ポリシーはこのインストールを実行できないように設定されています。
この問題は、「Windowsインストーラー4.5」をインストールすることで解消できます。幸運なことに、Windowsインストーラー4.5は実行ファイル形式(.exe)なので、セーフモードでもインストール可能です。
Windowsインストーラー4.5をインストールしても問題が解決しない場合は、それこそ本当にポリシーで制限されているのでしょう。ポリシーに対応しているWindows XP Professionalの場合は、「ローカルコンピューターポリシー」(gpedit.msc)を開いて、次のポリシーを確認してみてください。
コンピューターの構成\管理用テンプレート\Windowsコンポーネント\Windowsインストーラー\Windowsインストーラーを無効にする
コンピューターの構成\Windowsの設定\セキュリティの設定\ソフトウェア制限のポリシー
個人でこのポリシーを設定している人は、まず、いないとは思いますが……。
Windowsインストーラーと同じテクニックを用いることで、Windows UpdateやMicrosoft Updateによる更新を可能にすることもできます。ただし、「セーフモード」ではできません。Windows UpdateやMicrosoft Updateはネットワーク機能に依存するサービスであるため、「セーフモードとネットワーク」で起動する必要があります(画面6)。
Windows UpdateやMicrosoft Updateのために、「セーフモードとネットワーク」で次のサービスを許可するようにレジストリを構成します。
Microsoft Officeアプリケーション(クイック実行版を除く)の更新に対応するには、さらに次のいずれかのサービスを許可します。前者は32bit版Microsoft Office、後者は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 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)。この謎の原因と対策については、次回に説明します。
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Hyper-V(Oct 2008 - Sep 2014)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手がける。個人ブログは『山市良のえぬなんとかわーるど』。
Copyright © ITmedia, Inc. All Rights Reserved.