質問者
次回起動時に「Windowsが正しくシャットダウンされませんでした」画面が表示されるか否か判別する方法はあるでしょうか?

質問
-
# マイクロソフト コミュニティからこちらでの質問を薦められました。
# TechNet フォーラム皆様のお力添えをお願いいたします。
次回電源投入時に「Windowsが正しくシャットダウンされませんでした」画面が表示されるか否かを調べたく、現在四苦八苦しております。
PCをWindowsPEで起動し、内蔵HDDのファイル(レジストリハイブやイベントログevtx等々)を調査することで、次回電源投入時に「Windowsが正しくシャットダウンされませんでした」画面が表示されるか否かを判別することは可能でしょうか?
HDDにインストールされているOSはWindowsVistaBusiness(x86)です。
以下、長文乱文でお恥ずかしいですが、事の経緯をご説明いたします。
--------------------------------------------------------------------------------
■作業内容
今般、社内4500台のPCにVistaのマスタイメージを展開しました。
手順では、イメージ展開およびシャットダウン後、そのままの状態で各部署に配送し、個別設定を実施することになっております。
■問題
しかし、外注作業者への作業指示不徹底により、
イメージ展開→シャットダウン→電源投入→Vistaの起動ロゴが表示されることを確認→物理ボタン長押しで強制電源断
という作業を行った機器が相当数あることが分かりました。
このため、各部署での作業時に、表題にもあるように「Windowsが正しくシャットダウンされませんでした」の画面が表示されるPCが1割程度発生し、統括部署からクレームを受けております。
■対応策
マスタイメージ展開完了済みの全4500台のPCのうち、未発送の4300台のPCについて、WindowsPEなどで起動し、強制的に電源断されていないか(=次回起動時に「Windowsが正しくシャットダウンされませんでした」が表示されずに通常通りにOSが起動するかどうか)確認し、問題があるPCは再度イメージ展開作業実施、100%の確度で問題無いことが分かればそのまま各部署に配送する、としたいと考えております。
対応作業時間を可能な限り短縮したく、今回のご質問をさせていただきましたが、最悪、全台についてイメージ展開をやり直すしか無いと考えております。
--------------------------------------------------------------------------------
Windowsは起動時に何を見てエラーチェックを行っているのでしょう?
WindowsPEで同様のエラーチェックを再現できれば良いのでしょうが、今のところその術が分かりません。
様々なタイミングでPCの電源を強制断し、全ファイルのコンペアやイベントログのチェックを行ってみましたが、有用な情報を発見することができませんでした。
以上、ご助力のほど何卒よろしくお願いいたします。
MasahiroMinatoda- 編集済み Masahiro Minatoda 2014年5月23日 3:43
2014年5月23日 3:40
すべての返信
-
Windows Internals (6th) には
Windows uses a boot status file (%SystemRoot%\Bootstat.dat) to record the fact that it has progressed through various stages of the system life cycle, including boot and shutdown. This allows the Boot Manager, Windows loader, and the Startup Repair tool to detect abnormal shutdown or a failure to shut down cleanly and offer the user recovery and diagnostic boot options, like Last Known Good and Safe Mode.
とあるので、判定の元は boot status file なのでしょう。中身の仕様はわかりませんが。2014年5月23日 8:43 -
チャブーンです。
HomeClosetさん、情報ありがとうございます。
これなんですが、検索で調べてみるとどうもレジストリハイブのようで、「HKEY_LOCAL_MACHINE\BCD00000000」にバインドしているようですね。じゃあWinPEのregeditのハイブ読み込みでできるかな?と思って試してみたのですが、読み込みエラーがでて、これはできませんでした。bcd.log*ファイルがうまく見つからないから、の気がしていますが、ちょっとそれ以上は調べられていません(以上Windows 7で検証)。ちなみに正常起動だとBCD00000000キー内部は見られるのですが、「正常終了の失敗」を意味する値については見た限りではちょっとわかりませんでした。
質問者さんへのコメントですが、発想の変換で「実際に起動して確認」という方法は難しいのでしょうか?WinPEで全台検査ということであれば、本体に入電はするのだと思います。システム利用時と同じ条件(ネットワークに接続可能にする等)したうえ、単純に入電時にシステム回復メニューが表示されるかどうかで判断する方法が妥当なような気がします。起動時にネットワーク経由の初期セットアッププログラムが実行される、といった特殊環境でなければ、ネットワークが繋がらなくても起動には問題はない(イベントログにエラーは記録されますが)と思います。
あと、Windowsのファイルシステム(NTFS)は強制シャットダウンに対する備えが昔から行われており、特に最近のWindowsでは強制断でファイルが破損するといったことはほとんどありません。サードパーティのアプリケーションが管理する設定ファイルで「最終的な設定情報等を保存できない」ため、情報が反映されないということはあり得ますが、アプリケーションの実装次第なので、該当するかどうか、これはわかりません。このような状況を考えていただき、[メニューから正常起動]→試験アカウントでログオンして簡単な動作テストを行う、で問題がないことを確認する、といった対応もあり得るだろうなぁというのは申し添えておきます。
2014年5月25日 4:43 -
Bootstat.dat は "regf" で始まっていないのでレジストリ ハイブではなくて、
HKLM\SYSTEM\CurrentControlSet\Control\hivelist によれば、HKLM\BCD00000000 は Bootstat.dat ファイルではなく BCD ファイルのようです。本題については、確認方法があったとしても、全部確認して一部再展開より、全部再展開のほうが早い可能性が高そうな気もします。
- 編集済み HomeCloset 2014年5月25日 5:11
2014年5月25日 5:10