更新履歴(1件・最終更新 2026年09月05日)
この記事に加えた変更の記録です。アーカイブした更新前のバージョンは、DOI付きの固定URLから読めます。
- 記事の主張を変えず、目的別の構成と比較表に整理し、知識マップを冒頭に配置した。
- 初版公開
この記事を引用する(DOI(登録済みアーカイブ): 10.5281/zenodo.22314107)
以下のDOIは過去に登録されたアーカイブを指しており、現在の本文とは一致しない場合があります。現在の本文を参照するときは、このページのURLを使用してください。
小村 豪(2026)「高速スタートアップの正体 ── Windowsの「シャットダウン」が再起動と違う理由」合同会社小村ソフト. https://comcomponent.com/blog/windows-fast-startup-hybrid-shutdown-explained/
- DOI(登録済みアーカイブ)
- 10.5281/zenodo.22314107
- DOI(前回登録した版)
- 10.5281/zenodo.22314108
「シャットダウンして電源を入れ直したのに、プリンターが認識されない。ところが再起動したら直った」
この違いを理解する鍵が、Windowsの高速スタートアップです。Windows 8以降では、休止状態をサポートし、この機能が有効なPCの「シャットダウン」は、Windowsの状態をすべて作り直す操作ではありません。アプリとユーザーセッションは閉じますが、カーネル・ドライバー・サービスの状態は保存し、次の起動で復元します。これをハイブリッドシャットダウンと呼びます。12
一方、「再起動」は高速スタートアップの設定にかかわらず、常に完全なブートサイクルを行います。「電源を切って入れ直す」と「再起動する」は、同じ操作ではないのです。1
この記事では、先に操作の選び方を示し、その理由、症状別の切り分け、確認方法、設定変更の判断へと進みます。APIやWindowsサービスの実装上の注意は7章にまとめました。対象はWindows 10/11を管理する情シス担当者と、装置PC・検証機向けのWindowsアプリ開発者です。確認・設定にはPowerShell 5.1以降を使います。
1. まず結論:目的に合う操作を選ぶ
高速スタートアップをいきなりオフにする前に、何をしたいのかを分けてください。
| 目的・困りごと | 最初に選ぶ操作・対応 | 詳しい説明 |
|---|---|---|
| 不具合を切り分けたい、Windowsの状態を一度リセットしたい | 再起動する。ただし、直っただけで原因を断定しない | 3.1・4.1 |
| Windowsを完全に終了し、電源も切りたい | shutdown /s /t 0 を実行する |
3.2 |
| 保留中の更新を終わらせたい | 「更新して再起動」を選ぶ | 4.3 |
| 夜間にWake on LANで起こしたい | 高速スタートアップのオン・オフではなく、待機する電源状態を見直す | 4.4 |
| 毎回の「シャットダウン」で初期化される運用にしたい | 端末の役割を確認してから、高速スタートアップの無効化を検討する | 6章 |
flowchart TB
accTitle: 電源メニューの3つの操作と実際に起きること
accDescr: シャットダウンは既定でハイブリッドシャットダウンになりカーネルを休止ファイルへ保存する。再起動は常に完全なブートサイクルを行う。休止状態はユーザーセッションごと休止ファイルへ保存する。
shutdown["シャットダウン"] --> hybrid["ハイブリッドシャットダウン(既定)"]
hybrid --> saveKernel["カーネルを休止ファイルへ保存"]
restart["再起動"] --> full["完全なブートサイクル"]
full --> reinit["カーネル・ドライバー・サービスを作り直す"]
hibernate["休止状態"] --> s4["休止(S4)"]
s4 --> saveAll["メモリ全体を保存"]
図1: 「シャットダウン」は状態を保存し、「再起動」はWindows側の状態を作り直す。通常の休止状態は、ユーザーセッションも含めて保存する。再起動しても、接続先の装置の電源まで切れるわけではない。
「一度リセットすること」と「毎回の終了方法を変えること」は別の判断です。一般の業務用ノートPCはオンのままとし、必要なときに再起動するのが現実的です。Microsoftも高速スタートアップの一律の無効化は推奨していません。1
図の実線は常に成り立つ関係、破線は条件付きの関係です(成立条件は詳細ページの各関係の説明に記載)。関係すべての一覧(全24件、根拠・確度つき)と主要概念の定義は知識マップ詳細ページにまとめています。データ: JSON-LD / Turtle
2. 仕組み:Windowsの状態を「作り直さずに戻す」
2.1 完全シャットダウンとの分かれ道
Windowsの起動には、従来のコールドブート、休止状態からの復帰、Windows 8で導入された高速スタートアップの3つのモードがあります。コールドブートでは、ブートローダーがカーネルをメモリに読み込んでリンクし、カーネルがコアの機能を構成して、接続されたデバイスを列挙し、ドライバーを読み込みます。高速スタートアップは、その代わりに休止ファイルから初期化済みの状態を読み戻します。5
読み戻すための準備は、前回のシャットダウン時に行われます。アプリを閉じ、すべてのユーザーをサインアウトするところまでは完全シャットダウンと共通です。そのあとが分かれます。51
| 段階 | 完全シャットダウン | ハイブリッドシャットダウン |
|---|---|---|
| アプリ・ユーザーセッション | アプリを閉じ、すべてのユーザーをサインアウトする | 同左 |
| カーネルセッション | 閉じる | 閉じずに休止させる |
| 電源を切る前の処理 | システムを終了する | ドライバーに休止準備の電源IRPを送り、カーネルモードドライバーを含むメモリイメージを hiberfil.sys に保存する |
| 次に電源を入れたとき | カーネル・ドライバーなどを初期化する | 保存した状態を読み戻して再開する |
ドライバーが受け取るのも、終了の通知ではなく、休止への遷移を告げる電源IRPです。ユーザーには電源オフに見えても、Windowsの芯の部分は終了せず、次の起動まで保存されているわけです。5
2.2 保存されるものと、閉じられるもの
境界は、ユーザーセッション(セッション1以降の対話セッション)とカーネルセッション(セッション0)にあります。62
| 対象 | ハイブリッドシャットダウン時の扱い |
|---|---|
| 開いていたアプリ、サインイン状態 | ユーザーセッションのサインアウトで終了する |
| ユーザー単位のサービス(per-user service) | サインアウト時に停止・削除される |
| カーネル、読み込まれたカーネルモードドライバー | 状態を休止ファイルへ保存し、次回起動で復元する |
| セッション0のシステムサービス | 停止・起動し直すのではなく、状態を保って休止・復元する |
ユーザー単位のサービスとセッション0のサービスは、同じ「サービス」でも扱いが違います。前者はサインイン時に作られ、サインアウト時に停止・削除されるため、持ち越されません。7
反対に、保存される側には、ドライバーの内部状態や、システムサービスが保持するハンドル・メモリ・内部キャッシュが残ります。Microsoftのハードウェア向けドキュメントも、カーネル・ドライバー・サービスが再起動ではなく保存・復元されるため、カーネルの再起動間の稼働時間が以前のWindowsより長くなり得ると説明し、ドライバーやサービスのメモリリークを監視するよう求めています。2
2.3 通常の休止状態との違い
通常の休止状態は、ユーザーセッションを含むメモリ全体を保存します。高速スタートアップは、ユーザーをサインアウトしてから保存します。その分だけ休止ファイルが小さく、書き出しも読み戻しも速くなります。26
電源状態の用語では、完全シャットダウンがS5、休止状態がS4です。ハイブリッドシャットダウンは、ユーザーにはS5のように見えますが、実際にはS4を経由します。ただしデバイスのwakeアラームへの応答はS5相当に扱われます。同じS4でも通常の休止状態とすべて同じ振る舞いになるわけではなく、この違いが4.4のWake on LANに関係します。6
2.4 次の起動では「初期化」ではなく「再開」する
高速スタートアップからの起動は、ファームウェアの初期化、休止ファイルの読み込み、デバイスの再開、Winlogonの再開、Explorerの初期化という順に進みます。休止ファイルには、シャットダウン時に書き出したシステムのコンテキストが保存されています。8
ここで重要なのは、デバイスが初期化ではなく再開されることです。周辺機器を認識しない、USB機器が復帰後に反応しない、といった不調をドライバーが内部に抱えていた場合、その状態も持ち越され得ます。
「再起動」はこの保存・復元の経路を使わず、常に完全ブートを通ります。ドライバーのインストール後や、完全な再起動なしには置き換えられないWindowsの要素を更新したあとに再起動が必要なのも、Windows側の状態を作り直すためです。1
3. 設定を変えずにリセット・完全シャットダウンする
3.1 リセットして使い続けるなら「再起動」
不具合の切り分けや、一度Windowsをまっさらな状態にしたい場合は、電源メニューの「再起動」を選びます。高速スタートアップの設定に依存しないため、手順書にもこの操作を書くのが確実です。1
ただし、再起動は完全なブートサイクルであって、電源が切れた状態(S5)にしておく操作ではありません。別OSからディスクを扱う前など、Windowsを完全に終了して電源も切る必要がある場合は、次の方法を使います。
3.2 電源まで切るなら shutdown /s /t 0
作業を保存してから、次のコマンドを実行します。
shutdown /s /t 0
Shutdown.exe の /s は既定で完全シャットダウンです。ハイブリッドシャットダウンにしたいときだけ /hybrid を /s と組み合わせます。電源メニューの「シャットダウン」と、コマンドの /s は既定の動作が違います。19
装置PCの終了処理やバッチでも、このコマンドなら「完全に終了して電源を切る」という意図を明確にできます。なお、/g は完全にシャットダウンしてから再起動し、自動再起動サインオン(ARSO)が有効なら登録済みアプリを再開するオプションで、電源を切ったままにする指定ではありません。9
3.3 Shiftキーを使う方法と、アプリから呼ぶ方法
Shiftキーを押しながら「シャットダウン」を選ぶと、その1回だけ完全シャットダウンになります。ただし、これは公式リファレンスではなくMicrosoft Q&Aのサポート回答で案内されている手順です。運用に使う場合は5章の稼働時間やイベント27で結果を確認し、ユーザー向け手順書には確実さの点で「再起動」か shutdown /s /t 0 を書くほうが無難です。10
アプリからAPIで完全シャットダウンすることもできます。たとえば InitiateSystemShutdownEx の bRebootAfterShutdown を FALSE にする方法です。APIごとのフラグ、電源オフと再起動の違い、必要な特権は7章にまとめます。11
4. 症状別に原因を切り分ける
ここまでの仕組みで、稼働時間や不具合の持ち越しは説明できます。ただし、目の前の症状を高速スタートアップのせいだと決めつけてはいけません。とくにWake on LANは、別の制約として切り分けます。
4.1 シャットダウンでは直らず、再起動すると直る
最初にすることは、再起動後にも再現するかの確認です。再起動で消えるなら、ドライバーやサービスに持ち越された状態が原因だという仮説が有力になります。
ただし、再起動で直ったことだけでは確定しません。間欠的な不具合がたまたま出なかった可能性も、再起動が保留中の更新を完了させた可能性もあります。原因として扱う前に、次の裏付けを取ります。
- 「シャットダウン後は再現し、再起動後は再現しない」を複数回確認する。
- 5章のKernel-Bootイベント27で、直近の起動が高速スタートアップ(
0x1)だったことを確認する。 - デバイスマネージャーやシステムログにある、ドライバー側の記録と突き合わせる。
裏付けが取れても、すぐに全端末の設定を変える必要はありません。多くの場合、手順書の「電源を切って入れ直す」を「再起動する」に直せば足ります。毎回の終了時に初期化を保証したい端末かどうかは、6章で判断します。
シャットダウン自体が失敗して、ロック画面に戻る場合は別の確認が必要です。高速スタートアップが有効なシャットダウンは休止処理として実行され、その途中でメモリダンプの構成を初期化します。ダンプフィルターのドライバーを読み込めないと休止に失敗し、イベントID 45を記録してロック画面へ戻ります。Microsoftが示す確認先は、HKLM\SYSTEM\CurrentControlSet\Control\CrashControl の DumpFilters です。この症状は「シャットダウンの失敗」ではなく「休止の失敗」と捉えると、調べる場所が明確になります。1
4.2 毎晩シャットダウンしても、稼働時間がリセットされない
タスク マネージャーの「パフォーマンス」>「CPU」に、何日もの稼働時間が表示されることがあります。ハイブリッドシャットダウンではカーネルが休止・復元されるだけなので、カーネルの起動時刻は更新されません。2
WMIでは、Win32_OperatingSystem.LastBootUpTime を使い、現在時刻から起動時刻を引いて稼働時間を求めます。完全ブートを通る再起動や、完全シャットダウン後の起動では、この基準になる起動時刻が更新されます。12
PowerShell 6以降の Get-Uptime は、高分解能タイマーのシステム起動以降のティック数を使います。そのためWMIから求めた値とはわずかに異なる場合がありますが、カーネルの起動を基準にする点は同じです。13
稼働時間が長いだけで、故障とも高速スタートアップとも断定しないでください。スリープ、明示的な休止状態、完了しなかったシャットダウンでも稼働時間は保たれます。イベント27と周辺のログを確認してから説明します。
また、「稼働時間が30日を超えたら再起動を促す」といった監視では、毎日シャットダウンしているユーザーにも警告が出ます。監視が誤っているわけではありません。通知文を「再起動してください」にしておくと、「昨夜シャットダウンしたのに」という混乱を避けられます。
4.3 「更新してシャットダウン」を選んでも更新が終わらない
更新を終わらせたいときは、「更新して再起動」を選びます。Microsoftのサポート情報(KB4011287)は、一部の更新が完全シャットダウン後の起動でしか完了できず、高速スタートアップの休止経由では保留される場合があると説明しています。この動作は再起動では起きません。3
「更新してシャットダウン」のあと、翌朝また「更新中」が出るのは、更新失敗ではなく、完全ブートを待っていた処理がその起動で進んでいるだけのことが多いです。高速スタートアップを無効にしている場合は、「更新してシャットダウン」も完全ブートを通るため、前提が変わります。
同じサポート情報には、Configuration Managerで管理する環境での更新完了の遅延が、Configuration Manager 2002とWindows 10 21H1で対処されたことも記載されています。3
4.4 シャットダウンしたPCをWake on LANで起こせない
この問題は、高速スタートアップをオフにするだけでは解決しません。Windows 10/11では、ハイブリッドシャットダウンからも完全シャットダウン(S5)からも、WindowsとしてのWake on LAN(WOL)はサポートされていません。414
| 待機状態 | WindowsとしてのWOLの扱い |
|---|---|
| 従来のスリープ(S3) | サポートされる経路。ただしNICとwake設定に依存する |
| ユーザーが明示的に選んだ休止状態(S4) | サポートされる経路。ただしNICとwake設定に依存する |
| ハイブリッドシャットダウン(実体はS4) | NICがwake用に準備されず、サポートされない |
| 完全シャットダウン(S5) | サポートされない |
| Modern Standby(S0低電力アイドル) | ネットワークがwakeソースになり得るが、機種と電源条件の確認が必要 |
同じS4でも、「休止状態」と「シャットダウン」ではWindowsの扱いが違います。Microsoftの説明では、シャットダウンを指示したユーザーは消費電力ゼロを期待するため、Windowsはハイブリッドシャットダウンへの遷移時にNICをwake用に準備(arm)しません。明示的な休止状態への遷移では、この無効化は行いません。4
Windows 7でも、既定の完全シャットダウン(S5)からのWOLは公式にはサポートされていませんでした。ただし、残留電力があればNICがwake用に準備されたままになる機種がありました。Windows 10の既定のハイブリッドシャットダウンでは、Windowsが明示的にwakeを無効にする、という違いがあります。4
Modern Standby機は「スリープなら必ず起きる」と一般化できません。powercfg /a に「S0 低電力アイドル」と出る機種にはS3がありません。Modern Standbyでは画面が消えていてもシステムが低電力で動き、Wi-Fi・Ethernet・モバイルブロードバンドが接続を維持してwakeソースになり得ます。Ethernet接続時のリモートデスクトップやファイル共有でSoCを起こせることも、Microsoftの資料に記載されています。15
ただし、同じ資料には次の条件もあります。15
- 切断スタンバイではアプリがネットワークを使えず、バッテリー駆動中にはネットワークスタックが切断を始める場合がある。
- 有線LANは、パターンマッチのオフロードに対応していなければModern Standby対応にならない。
- Windows 11 version 24H2以降は、過度なバッテリー消費を検知すると多くのwakeソースが無効になる。
SurfaceではWindows 10 version 1607以降、Modern Standby中のWOLが既定で動作するとされていますが、他社製ノートPCの保証にはなりません。実際に起こせるかはNIC・ファームウェア・AC/DCの電源条件・OEMの実装で決まるため、夜間ジョブなどの無人運用に組み込む前に実機で確認してください。16
また、ファームウェアとハードウェアが独自にS4/S5からのwake用にNICを準備できる機種もあります。この場合Windowsは関与しません。「シャットダウンから起きる機種もある」というのは、この例外です。4
運用上は、起こしたい端末を「スリープ」か「休止状態」で待機させるのが基本です。NICの「Wake on Magic Packet」などを正しく設定していても、OSの電源遷移がwakeを無効にしていれば起きません。ドライバー側の区別方法は7.5で説明します。Modern Standbyの動作は「スリープ・休止・Modern Standbyと長時間稼働アプリ」、NICの設定は「Windows NIC詳細設定ガイド」も参照してください。
4.5 デュアルブートや別OSから同じディスクを扱う
この節は、電源状態の一次情報を踏まえた、仕組みから導かれる注意点です。ハイブリッドシャットダウンではカーネルのメモリイメージが保存され、次回起動で復元されます。6
休止に入る時点で保留中の書き込みはディスクへ確定されますが、ファイルシステムドライバーのキャッシュや、ボリュームの構造についての前提は休止ファイルに残ります。この間に別OS(LinuxやWindows PEなど)が同じNTFSボリュームへ書き込むと、次回Windowsが復元した古い認識と、ディスクの実体が食い違います。
危険なのは休止そのものではなく、別OSが書き換えたあとで、Windowsが古い状態を復元することです。Linux側のNTFSドライバーが休止状態のボリュームへの書き込みを拒否したり、読み取り専用でマウントしたりするのは、この不整合を防ぐための正しい動作です。
同じディスクを複数OSで扱う端末や、修復用の別OSから起動する検証機では、次のどちらかを運用に組み込みます。
- 高速スタートアップをオフにし、
powercfg /h offで明示的な休止状態も無効にする。 - OSを切り替える前に、3章の完全シャットダウンを必須にする。
高速スタートアップだけをオフにしても、明示的な休止状態は残ります。休止したまま別OSから書き込めば、同じ不整合が起きる点に注意してください。
4.6 ファームウェア設定やデバイス構成の変更が反映されない
UEFI設定や周辺機器の構成を変えたのに、電源を切って入れ直しても以前の状態が残っているように見える場合は、再起動して完全ブートを通します。高速スタートアップでは、ドライバーはコールドブート時の初期化ではなく再開の経路を通るためです。
Microsoftは、コールドブートと休止復帰でデバイス構成を変えるドライバーに対し、高速スタートアップ後はコールドブートとして構成するよう求めています。そう実装されていないドライバーでは、再開の経路が問題になります。ドライバー側での判別方法は7.5にまとめます。5
5. 「設定」と「実際の起動経路」を分けて確認する
高速スタートアップが有効な設定であっても、直近の起動がその経路だったとは限りません。設定を確認する情報と、起動結果を確認する情報を分けて読みます。
5.1 確認する場所は4つ
| 確認先 | 分かること | 注意点 |
|---|---|---|
| タスク マネージャーの稼働時間 | カーネルの起動から時間が続いているか | 最初の手がかり。スリープ・休止・シャットダウン失敗でも続くので、単独では断定しない |
| システムログのKernel-Boot、イベントID 27 | 直近の起動の種類 | 稼働時間と突き合わせて、実際の経路を確認する |
powercfg /a |
利用可能な電源状態、休止ファイルの有無・種類 | 縮小休止ファイルでは、通常の休止状態が使えなくても高速スタートアップは使える |
ローカルとポリシーの HiberbootEnabled |
高速スタートアップの設定 | ポリシーの 0 は「無効を強制する」意味ではない |
稼働時間の考え方は4.2、休止ファイルと設定の関係は6.3・6.4でも説明します。261718
5.2 イベント27の読み方
Kernel-Bootのイベント27は、起動時に「ブートの種類は 0x1 でした」のような値を記録します。値の意味は公式リファレンスに記載がありませんが、次の対応として広く知られています。
| 値 | 起動の種類 |
|---|---|
0x0 |
完全ブート |
0x1 |
高速スタートアップ |
0x2 |
休止状態からの復帰 |
稼働時間が続いていても、直近の値が 0x2 なら通常の休止状態からの復帰で、高速スタートアップではありません。稼働時間だけで説明せず、イベント27と組み合わせます。
5.3 PowerShellでまとめて確認する
次のスクリプトは、設定・休止ファイル・稼働時間・直近5回の起動の種類をまとめて表示します。レジストリとイベントログの読み取りは管理者権限がなくても大半は動きますが、powercfg /a は環境によって管理者権限を要求します。
# 高速スタートアップの設定と直近の起動の種類をまとめて表示する
$powerKey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power'
$policyKey = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\System'
$local = Get-ItemProperty -Path $powerKey -Name HiberbootEnabled -ErrorAction SilentlyContinue
$policy = Get-ItemProperty -Path $policyKey -Name HiberbootEnabled -ErrorAction SilentlyContinue
$os = Get-CimInstance -ClassName Win32_OperatingSystem
$hiberfil = Test-Path -LiteralPath "$env:SystemDrive\hiberfil.sys"
# 休止ファイルが無ければ(powercfg /h off)、レジストリの値にかかわらず高速スタートアップは動かない。
# ポリシー「高速スタートアップの使用を要求する」は有効(1)のときだけローカル設定より優先する。
# ポリシー値が 0 か未構成ならローカル設定(値なしは既定で有効)が使われる
$effective =
if (-not $hiberfil) { '使えない(休止ファイル無し: powercfg /h off の状態)' }
elseif ($null -ne $policy -and $policy.HiberbootEnabled -eq 1) { '有効(ポリシーで強制)' }
elseif ($null -eq $local -or $local.HiberbootEnabled -eq 1) { '有効(ローカル設定)' }
else { '無効(ローカル設定)' }
[pscustomobject]@{
LocalHiberbootEnabled = if ($null -eq $local) { '(値なし: 既定で有効)' } else { $local.HiberbootEnabled }
PolicyHiberbootEnabled = if ($null -eq $policy) { '(未構成)' } else { $policy.HiberbootEnabled }
EffectiveSetting = $effective
HiberfilExists = $hiberfil
LastBootUpTime = $os.LastBootUpTime
Uptime = (Get-Date) - $os.LastBootUpTime
} | Format-List
# 直近5回の起動の種類(0x0=完全ブート、0x1=高速スタートアップ、0x2=休止からの復帰)
Get-WinEvent -FilterHashtable @{ LogName = 'System'; ProviderName = 'Microsoft-Windows-Kernel-Boot'; Id = 27 } -MaxEvents 5 |
Select-Object TimeCreated, Message
# 利用可能なスリープ状態と休止ファイルの種類
powercfg /a
ここで表示する実効設定は、休止ファイルがあるか、ポリシーで有効を強制しているか、ローカル設定はどうかの順に判断します。ポリシー値が 0 または未構成ならローカル設定を使い、休止ファイルが無ければ、どの設定値でも高速スタートアップは使えません。
5.4 「誰が終了を要求したか」は別のログで確認する
システムログのイベントID 1074(User32) には、要求したプロセス・ユーザー・理由コードと、要求された操作(電源オフ、再起動など)が記録されます。ただし、ハイブリッドも完全シャットダウンも電源オフとして記録されるため、1074だけでは両者を区別できません。実際の経路は、次回起動時のイベント27で確認します。
予期しない停止は、41(Kernel-Power) や 6008(EventLog) との並びで切り分けます。19 「装置PCが朝止まっていた」を追う手順は「アプリから見たWindowsのシャットダウン」で扱っています。
6. 高速スタートアップをオフにする判断と手順
6.1 一律にオフにせず、端末の役割で決める
Microsoftは高速スタートアップを既定で有効とし、無効化を推奨していません。起動時間の利点があり、ハードウェア向け資料では休止ファイルの読み書きが起動時間の約50%を占めるほど重要な処理として扱われています。一般のノートPCで、一律にオフにする理由はありません。12
判断の軸は、「電源オフで初期化されることが運用の前提か」と、「別OSから同じボリュームを書き換えるか」の2つです。この2つは独立しています。装置PCだからオフにした、で確認を終えず、別OSからの書き込みの有無も確認します。
| 端末の役割・目的 | 推奨する対応 | 理由 |
|---|---|---|
| 装置PC・計測PCで、電源オフによる初期化が運用の前提 | オフにする | 手順書を「再起動」に直せない現場では、設定で初期化を担保する |
| 検証機・複数OSで同じディスクを扱う端末 | オフに加えて休止状態も無効にするか、OS切り替え前の完全シャットダウンを必須にする | 高速スタートアップだけ止めても、明示的な休止状態による不整合は残る(4.5) |
| WOLで夜間に起こしたい端末 | 設定ではなく待機状態を見直す | オフにしてもS5からのWOLはサポートされない。Modern Standby機は実機確認が必要(4.4) |
| ストレージの小さい端末 | 縮小休止ファイルを検討する | 高速スタートアップを残したまま、休止ファイルを小さくできる(6.4) |
| 一般の業務用ノートPC | オンのまま、必要なときに再起動する | 起動の速さを保ち、切り分けは再起動で行える |
| シャットダウンしない常時稼働のサーバー的な端末 | どちらでもよい | シャットダウンしなければ設定は効かず、再起動は常に完全ブートになる |
6.2 1台ずつ変更する:コントロール パネル
Windows 10/11とも、変更する場所は「設定」アプリではなくコントロール パネルです。4
- 「電源オプション」を開き、「電源ボタンの動作を選択する」を選ぶ。
- 項目が灰色なら、「現在利用可能ではない設定を変更します」をクリックする(管理者権限が必要)。
- 「高速スタートアップを有効にする (推奨)」のチェックを外す。
- 変更を保存する。
項目自体が表示されない場合は、休止状態が無効で、休止ファイルが無い状態です。6.4の powercfg /a と休止ファイルの説明を確認してください。
6.3 複数台に設定する:レジストリとポリシーを区別する
ローカルの設定値は、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power の HiberbootEnabled(DWORD) です。0 で無効、1 で有効になり、コントロール パネルのチェックボックスもこの値を読み書きします。17
# 管理者として開いた PowerShell で実行する。高速スタートアップを無効にする
$powerKey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power'
Set-ItemProperty -Path $powerKey -Name HiberbootEnabled -Type DWord -Value 0
# 設定値を読み戻して確認する
(Get-ItemProperty -Path $powerKey -Name HiberbootEnabled).HiberbootEnabled
ただし、「高速スタートアップの使用を要求する」ポリシーが有効なら、ローカル値よりポリシーが優先します。ローカル値を 0 にし、読み戻しが 0 でも、有効のままです。その場合は先にポリシーを無効または未構成に戻します。18
| ポリシーの状態 | 結果 |
|---|---|
| 有効 | 高速スタートアップを要求し、休止状態が有効であることを要求する。ローカル設定より優先する |
| 無効・未構成 | ローカルの HiberbootEnabled を使う。高速スタートアップの無効を強制するわけではない |
このポリシーは、WinInit.admx の「コンピューターの構成 > 管理用テンプレート > システム > シャットダウン」にあります。書き込む先は HKLM\SOFTWARE\Policies\Microsoft\Windows\System の HiberbootEnabled です。IntuneではPolicy CSPの ADMX_WinInit/Hiberboot として構成できます。18
一律にオフを配る場合は、グループポリシー基本設定(Preferences)やIntuneの構成で、ローカルの HiberbootEnabled = 0 を配ります。ユーザーがオフにできないようオンを強制する場合に、このポリシーを有効にします。
flowchart TB
accTitle: 高速スタートアップの設定の3層
accDescr: ポリシーの「高速スタートアップの使用を要求する」が有効ならローカル設定より優先して有効になり、未構成ならローカルのHiberbootEnabledが使われる。どちらの経路でも休止ファイルが存在しなければ高速スタートアップは使えない
policy{"ポリシー: 高速スタートアップの使用を要求する"}
policy -->|"有効"| forced["有効に固定(ローカル設定は無視)"]
policy -->|"無効・未構成"| local{"ローカル: HiberbootEnabled"}
local -->|"1(既定)"| on["有効"]
local -->|"0"| off["無効"]
forced --> hib{"休止ファイル(hiberfil.sys)はあるか"}
on --> hib
hib -->|"ある(完全または縮小)"| works["高速スタートアップが動く"]
hib -->|"ない(powercfg /h off)"| none["高速スタートアップは使えない"]
図2: ポリシーはオンを強制する設定。無効化を配るのはローカルのレジストリ値で、どちらも休止ファイルが無ければ高速スタートアップは使えない。
変更は次のシャットダウンから効きます。確認するときは、通常の「シャットダウン」をしてから電源を入れ、イベント27が 0x0 になることを見ます。再起動は設定に関係なく完全ブートになるので、無効化の確認には使えません。レジストリの読み戻しは設定値の確認、イベント27は実際の経路の確認です。
6.4 powercfg /h off は「高速スタートアップだけをオフ」とは違う
高速スタートアップは、休止ファイル hiberfil.sys の仕組みを使っています。powercfg /hibernate off(powercfg /h off)は、その休止ファイルを削除する操作です。高速スタートアップだけでなく、通常の休止状態とハイブリッドスリープも使えなくなります。206
一方、HiberbootEnabled = 0 にしても休止ファイルは残ります。目的ごとに、変更する対象を分けてください。
| 目的 | 設定・コマンド | 残る機能・失われる機能 |
|---|---|---|
| 高速スタートアップだけを止める | HiberbootEnabled = 0 |
休止ファイルは残る。完全な種類なら通常の休止状態も残る |
| ファイルを小さくし、高速スタートアップは残す | powercfg /h /type reduced |
縮小休止ファイル(既定で物理メモリの20%)。通常の休止状態とハイブリッドスリープは使えない |
| 通常の休止状態も使える種類に戻す | powercfg /h /type full |
完全な休止ファイル(既定で物理メモリの40%)。ストレージが32GB未満の端末では非推奨 |
| 休止状態ごと使わない | powercfg /h off |
休止ファイルを削除。高速スタートアップ・休止状態・ハイブリッドスリープがすべて使えなくなる |
完全な休止ファイルは、休止状態・ハイブリッドスリープ・高速スタートアップをサポートします。ただし、ハイブリッドスリープにはS3が必要なので、S3を持たないModern Standby機では完全な休止ファイルがあっても使えません。縮小休止ファイルは、高速スタートアップだけをサポートします。もともと縮小の種類だったPCで高速スタートアップだけオフにしても、通常の休止状態やハイブリッドスリープが使えるようにはなりません。6
powercfg /a の表示も、この違いを読み分けます。
| 休止ファイル | 通常の休止状態についての表示 | 高速スタートアップ |
|---|---|---|
| 完全(full) | 利用可能 | 利用できる |
| 縮小(reduced) | 「休止状態はサポートされていない」 | 利用できる |
| 無し | 「休止状態が有効になっていない」 | 利用できない |
/type reduced が「パラメーターが正しくありません」で失敗する場合は、休止ファイルのサイズが手動で40%より大きく設定されているためです。先に powercfg /h /size 0 でサイズをOS管理に戻し、再実行します。621
別OSから同じボリュームを書き換える端末では、残った通常の休止状態でも4.5と同じ不整合が起きます。高速スタートアップの無効化だけで終えず、休止状態も無効にするか、OS切り替え前の完全シャットダウンを必須にしてください。
7. 開発者向け:シャットダウンAPIとサービスの注意点
7.1 APIは「ハイブリッドか」だけでなく「どの操作か」も指定する
アプリからのシャットダウンAPIは、電源メニューとは既定の動作が違います。Microsoftの資料では、InitiateSystemShutdownEx と InitiateSystemShutdown はハイブリッドにならず、InitiateShutdown と ExitWindowsEx は明示的なフラグでハイブリッドを要求します。26
| API | 電源を切る完全シャットダウン | 高速スタートアップ用のシャットダウン |
|---|---|---|
InitiateSystemShutdownEx / InitiateSystemShutdown |
bRebootAfterShutdown = FALSE |
ハイブリッドにはならない |
InitiateShutdown |
SHUTDOWN_POWEROFF を指定し、SHUTDOWN_HYBRID を付けない |
SHUTDOWN_POWEROFF と SHUTDOWN_HYBRID を組み合わせる |
ExitWindowsEx |
EWX_POWEROFF を指定し、EWX_HYBRID_SHUTDOWN を付けない |
EWX_SHUTDOWN と EWX_HYBRID_SHUTDOWN を組み合わせる |
SHUTDOWN_HYBRID は単独では指定せず、同じ表の1つ以上のフラグと組み合わせます。そのうち高速スタートアップ用の電源オフになるのは、SHUTDOWN_POWEROFF との組み合わせです。EWX_HYBRID_SHUTDOWN も単独ではなく、EWX_SHUTDOWN と組み合わせます。2223
ハイブリッドのフラグを外しただけでは、操作は決まりません。次の区別も必要です。112223
| 引数・フラグ | 行われる操作 |
|---|---|
bRebootAfterShutdown = TRUE、SHUTDOWN_RESTART、EWX_REBOOT |
再起動 |
SHUTDOWN_NOREBOOT |
システムを止めるが、電源は切らない |
EWX_SHUTDOWN |
電源を安全に切れる状態までシステムを止めるが、電源は切らない |
ExitWindowsEx の uFlags = 0 |
EWX_LOGOFF、つまりサインアウト |
キオスク端末や装置PCに「電源オフ」ボタンを実装するなら、InitiateSystemShutdownEx を bRebootAfterShutdown = FALSE で呼ぶか、ExitWindowsEx を EWX_POWEROFF で呼び、ハイブリッドのフラグを付けないようにします。「フラグ無し」ではなく、必要な電源オフの指定を残すことが重要です。
7.2 呼び出す前に、正しいトークンで特権を有効にする
どのAPIでも、ローカルPCのシャットダウンには SE_SHUTDOWN_NAME 特権を AdjustTokenPrivileges で有効にしておく必要があります。既定ではサインインしているユーザーがこの特権を有効にできますが、無効のまま呼ぶとAPIは失敗し、シャットダウンは始まりません。1123
有効にするトークンは、APIによって違います。
| API | 特権を有効にするトークン |
|---|---|
ExitWindowsEx |
呼び出すプロセスのトークン。OpenProcessToken で開く |
InitiateSystemShutdown(Ex) / InitiateShutdown |
呼び出すスレッドの実効トークン。偽装中ならスレッドトークン、そうでなければプロセストークン |
偽装していない通常のデスクトップアプリやキオスクアプリにはスレッドトークンがありません。OpenThreadToken は ERROR_NO_TOKEN で失敗するため、特権が無効のまま呼び出しへ進まないようにします。
7.3 電源メニューと同じ動作にしたいなら、実効設定を読む
EWX_HYBRID_SHUTDOWN は、「高速スタートアップを要求する」フラグであって、「そのPCの設定に従う」フラグではありません。23
高速スタートアップをオフにしていても、休止ファイルが残るPCにこのフラグを付けて要求すると、ユーザーの設定をアプリが迂回する形になります。設定を尊重するユーティリティでは、5.3のスクリプトと同じ規則で、ポリシー、ローカルの HiberbootEnabled、休止ファイルの有無を確認します。
実効設定が有効なときだけ EWX_SHUTDOWN と EWX_HYBRID_SHUTDOWN を組み合わせ、無効なら電源オフの完全シャットダウンを選びます。結果は次回起動時のイベント27で確認します。
7.4 サービスは停止通知だけでなく、電源イベントにも対応する
ハイブリッドシャットダウンでは、ユーザーセッションのアプリは閉じますが、セッション0のサービスは休止・復元されます。ユーザー単位のサービスはサインアウト時に停止・削除されるので、ここでは区別してください。27
休止に入るときにはアプリとサービス、次いでドライバーに通知が届きます。復帰時にドライバーやサービスが起動し直されるのではなく、休止前の状態へ戻る点が重要です。6
Microsoftの評価ツールの資料は、SERVICE_ACCEPT_POWEREVENT を宣言したサービスへサスペンド通知が直列に送られ、サービスごとに30秒のタイムアウトが適用されること、サービスから見れば高速スタートアップは休止と同様であることを説明しています。24
装置との接続を保持したままサービスが休止し、その間に装置側の電源が切られた場合、翌朝復元される接続は既に使えなくなっています。停止通知だけに後始末を寄せると、この経路を処理できません。
| 経路 | 必要な受け入れ宣言 | サービスの扱い |
|---|---|---|
| 再起動・完全シャットダウン | SERVICE_ACCEPT_SHUTDOWN / SERVICE_ACCEPT_PRESHUTDOWN |
対応する停止通知を受けて終了する |
| ハイブリッドシャットダウン・休止 | SERVICE_ACCEPT_POWEREVENT |
電源イベントを受け、状態を保って休止・復元する |
停止通知は SERVICE_CONTROL_SHUTDOWN / SERVICE_CONTROL_PRESHUTDOWN です。この処理は再起動と完全シャットダウンのために必要なので、外してはいけません。残したうえで、スリープ・休止への遷移と復帰の電源イベントでも、後始末と再接続を行います。25
どちらの通知も、対応する受け入れ宣言をしたサービスにしか届きません。宣言していなければ、停止時は通知なしで終了し、ハイブリッドシャットダウン時は通知なしで休止・復元されます。完全シャットダウン後の起動で起動し直されるのは、開始の種類が自動のサービスです。手動・無効のサービスは、依存関係・トリガー・明示的な開始がなければ戻りません。具体的な電源イベントの受け方は「スリープ復帰で壊れるアプリ」で扱っています。24
7.5 ドライバーは高速スタートアップと通常の休止復帰を区別できる
ドライバーは、システムのset-power IRPに含まれる SYSTEM_POWER_STATE_CONTEXT を使って、両者を区別できます。5
| 経路 | TargetSystemState |
EffectiveSystemState |
|---|---|---|
| 高速スタートアップ | PowerSystemShutdown |
PowerSystemHibernate |
| 通常の休止状態からの復帰 | PowerSystemHibernate |
PowerSystemHibernate |
システム提供のNDISドライバーはこの違いを使い、高速スタートアップではミニポートのwake機能を無効にし、通常の休止からの復帰では無効にしません。これが4.4で説明した、同じS4でもWOLの扱いが違う理由です。5
また、コールドブートと休止復帰でデバイス構成を変えるドライバーは、高速スタートアップ後にはコールドブートとして構成する、というのがMicrosoftの指針です。5
8. 手順書と監視に反映する
仕組みを理解したら、現場の操作と文言を揃えます。
| 運用する場面 | 手順書・通知に書く内容 |
|---|---|
| 不具合の一次切り分け | 「電源を切って入れ直す」ではなく、「再起動する」 |
| 稼働時間のしきい値を超えたとき | 「再起動してください」。毎日シャットダウンしていても警告される理由を説明する |
| 更新を完了させるとき | 「更新して再起動」を標準にする |
| 装置PCの標準構成として無効化するとき | 6.3のレジストリ設定をキッティングに入れ、通常のシャットダウン後の起動を5章の方法で受け入れ確認する |
「再起動」と明記することは、現場で電源ボタン長押しによる強制電源断をされるのを避けるうえでも重要です。稼働時間による監視はそのまま使えます。高速スタートアップの端末で、カーネルが再起動されていないことを正しく検出しているからです。
再起動で不具合が消えた場合も、4.1の再現確認とログの裏付けを取ってから、手順や設定に反映します。再起動しても直らない場合は、高速スタートアップ以外の原因を追います。更新と装置PCアプリの関係は「アプリから見たWindowsのシャットダウン」も参照してください。3
9. まとめ
覚えておきたいのは、高速スタートアップが有効な「シャットダウン」は、ユーザーから見た電源オフであって、Windowsの状態をすべて作り直す操作ではないという点です。アプリとユーザーセッションは閉じますが、カーネル・ドライバー・セッション0のサービスは保存・復元されます。52
高速スタートアップをオフにしたPCや休止ファイルが無いPCでは、通常の「シャットダウン」もカーネルセッションを閉じてS5に入ります。
一度リセットしたいなら再起動、完全に終了して電源も切りたいなら shutdown /s /t 0 を選びます。再起動で直ったことだけでは原因を断定せず、再現確認とイベント27・周辺ログで裏付けます。19
高速スタートアップをオフにするかは、初期化を前提とする端末かと、別OSから同じボリュームを書き換える端末かで判断します。後者では、明示的な休止状態への対策も必要です。WOLが目的なら設定のオン・オフではなく、待機状態を見直します。17204
関連記事
- アプリから見たWindowsのシャットダウン ── 終了通知・再起動・電源断を正しく生き延びる
- スリープ復帰で壊れるアプリ ── 電源イベントの仕組みと復帰に強い業務アプリの作り方
- スリープ・休止・Modern Standbyと長時間稼働アプリ ── 「夜中に止まっていた」を設計で防ぐ
- Windows効率モードとは - 緑の葉アイコンとオフにする方法
- Windows NIC詳細設定ガイド - RSS/LSO/EEE/Wake on LAN
- WSUS非推奨後のWindows Update管理 ── WUfB・Autopatch・Intuneをどう選ぶか
- 産業用PCにはどのWindowsを入れるべきか ── Windows IoT Enterprise / LTSC 実践ガイド
- Windowsサービスの作り方と運用 ── タスクスケジューラとの使い分けからBackgroundServiceのサービス化まで
関連する相談領域
合同会社小村ソフトでは、装置PC・キオスク端末の電源運用(シャットダウン・スリープ・休止・Wake on LAN)を含むキッティング標準の設計、「再起動でしか直らない」「朝止まっていた」といった長期稼働アプリの不具合の原因調査、Windowsサービスや常駐アプリの電源イベント対応の設計レビューを扱っています。「シャットダウンしているはずなのに稼働時間が減らない」という一件からでもご相談ください。
参考リンク
-
Microsoft Learn, Fast startup causes hibernation or shutdown to fail in Windows 10 or Windows 8.1. 高速スタートアップではカーネルセッションを閉じずに休止させ、カーネルセッションとデバイスドライバーを hiberfil.sys に保存すること、再起動は完全なブートサイクルを行うこと、高速スタートアップの設定が再起動には適用されないこと、既定で有効であり無効化は推奨されないこと、
Shutdown /s /t 0が既定で完全シャットダウンで/hybridでハイブリッドになること、休止処理でメモリダンプ構成の初期化に失敗するとロック画面へ戻りイベントID 45が記録されDumpFiltersを確認すべきことについて。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 -
Microsoft Learn, Delivering a great startup and shutdown experience. Windows 8.x以降の既定のシャットダウンと再起動のシナリオが高速スタートアップと名付けられ、全ユーザーセッション(ドキュメントの表記では「セッション1」)をサインアウトして残りを休止ファイルへ書くこと、起動時に完全ブートの代わりに初期化済みの状態を休止ファイルから読み込むこと、ユーザー操作によるシャットダウンではカーネル・ドライバー・サービスが再起動ではなく保存・復元されるためカーネル再起動間の稼働時間が以前より大幅に長くなり得ること、ドライバーとサービスのメモリリークを監視すべきこと、休止ファイルの読み書きが起動時間の約50%を占めること、シャットダウンAPIの動作表(
InitiateSystemShutdownExとInitiateSystemShutdownは常に完全シャットダウン、InitiateShutdownはSHUTDOWN_HYBRIDで、ExitWindowsExはEWX_HYBRID_SHUTDOWNで高速スタートアップ用シャットダウン)について。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 -
Microsoft Learn, Updates may not be installed with Fast Startup in Windows 10. 高速スタートアップが有効だとシャットダウン後に更新プログラムがインストールされないことがあり再起動では起きないこと、一部の更新は完全シャットダウン後の起動でしか完了できないこと、保留中の更新を完了させるには電源メニューから「再起動」を選ぶこと、Configuration Manager環境での遅延がConfiguration Manager 2002とWindows 10 21H1で対処されたことについて。 ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Wake on LAN (WOL) behavior in Windows 10. Windows 7の既定のシャットダウンがS5でS5からのWOLは公式にはサポートされないものの残留電力で起きる機種があったこと、Windows 10の既定のシャットダウンがハイブリッドシャットダウン(S4)でS4・S5からのWOLはサポートされず、ネットワークアダプターが明示的にwake用に準備されないこと、WOLがスリープ(S3)かユーザーが明示的に選んだ休止(S4)からのみサポートされること、WindowsがWOLを明示的に無効にするのはハイブリッドシャットダウンへの遷移だけで休止への遷移では無効にしないこと、ファームウェアとハードウェアがS4/S5からのwakeをサポートする機種がありその場合Windowsは関与しないこと、コントロール パネルの「電源オプション」>「電源ボタンの動作を選択する」で「高速スタートアップを有効にする (推奨)」を外して無効化する手順と、無効化は推奨されないことについて。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Microsoft Learn, Distinguishing fast startup from wake-from-hibernation. 起動モードがコールド・休止からの復帰・高速(Windows 8で導入)の3つであること、コールドブートではカーネルの読み込み・デバイス列挙・ドライバー読み込みを行うのに対し高速スタートアップは休止ファイルを読み込むだけであること、高速スタートアップに備えてアプリを閉じ全ユーザーセッションをサインアウトし、ドライバーへ休止準備の電源IRPを送り、カーネルモードドライバーを含むカーネルのメモリイメージを hiberfil.sys に保存してから電源を切ること、
SYSTEM_POWER_STATE_CONTEXTのTargetSystemStateとEffectiveSystemStateで両者を区別できること、NDISドライバーが高速スタートアップではミニポートのwake機能を無効にし休止復帰では無効にしないこと、コールドブートと休止復帰で構成を変えるドライバーは高速スタートアップ後はコールドブートとして構成すべきことについて。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 -
Microsoft Learn, System power states. 高速スタートアップがユーザーをサインアウトしてから休止ファイルを作る種類のシャットダウンであること、ユーザーにはS5に見えても実際はS4を経由しデバイスのwakeアラームへの応答もそれに従うこと、セッション0の内容がディスクに書かれること、休止ファイルに完全(既定40%)と縮小(既定20%、高速スタートアップのみ)の2種類があり
powercfg /aの表示がそれぞれ異なること、/type reducedが失敗したら/size 0を先に実行すること、シャットダウン要求の既定が高速スタートアップで、再起動要求とアプリからのシャットダウンAPI呼び出しでは完全シャットダウン(S5)になること、休止に入るときアプリ・サービス・ドライバーが通知され、復帰時にドライバーとサービスは再起動されず休止前の状態に復元されること、InitiateShutdownのSHUTDOWN_HYBRIDとExitWindowsExのEWX_HYBRID_SHUTDOWNについて。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 -
Microsoft Learn, Per-user services in Windows. ユーザーがサインインするとユーザー単位のサービスが作られ、サインアウトすると停止・削除されること。 ↩ ↩2
-
Microsoft Learn, Optimizing Performance and Responsiveness. Windows 8で導入された高速スタートアップが既定の起動動作であり、シャットダウン処理が休止と同じ方法でデータをディスクへ書くよう更新されたこと、起動がBIOS初期化・休止ファイル読み込み・デバイス再開・Winlogon再開・Explorer初期化・Post On/Offの各フェーズを経ること、休止ファイルにシャットダウン時に書かれたシステムコンテキストすべてが含まれることについて。 ↩
-
Microsoft Learn, shutdown.
/sがコンピューターをシャットダウンすること、/hybridがデバイスをシャットダウンして高速スタートアップに備えるオプションで/sと組み合わせて使うこと、/gが完全にシャットダウンしてから再起動し自動再起動サインオンが有効なら登録済みアプリを再開すること、/tの既定が30秒で0を指定できることについて。 ↩ ↩2 ↩3 -
Microsoft Q&A, why is Task Host preventing shutdown?. サポートの回答として、デスクトップまたはサインイン画面でShiftキーを押しながら「シャットダウン」を選ぶと、その1回に限り高速スタートアップが一時的に無効になり完全シャットダウンになることが案内されていることについて(公式リファレンスではなくコミュニティのサポート回答)。 ↩
-
Microsoft Learn, InitiateSystemShutdownExA function (winreg.h).
bRebootAfterShutdownが TRUE ならシャットダウン後すぐに再起動し、FALSE ならキャッシュをディスクに書き出して安全に電源を切ること、ローカルPCをシャットダウンするには呼び出すスレッドにSE_SHUTDOWN_NAME特権が必要で、既定ではサインインしているユーザーがこの特権を有効にできること。 ↩ ↩2 ↩3 -
Microsoft Learn, WMI Tasks: Desktop Management. コンピューターの稼働時間を
Win32_OperatingSystemクラスのLastBootUpTimeプロパティから現在時刻を引いて求めることについて。 ↩ -
Microsoft Learn, Get-Uptime. PowerShell 6.0で導入され、最後のOS起動からの経過時間を高分解能タイマー(システム起動以降のティック数)で計算するため、WMIの
Win32_OperatingSystemのLastBootUpTimeから求めた値とわずかに異なる場合があることについて。 ↩ -
Microsoft Learn, Ethernet. 既定のシャットダウン動作がハイブリッドシャットダウン(S4)であること、ハイブリッドシャットダウン(S4)と完全シャットダウン(S5)の両方でNICがwake用に準備されずリモートwakeがサポートされないこと、WOLがスリープ(S3)か休止(S4)からのみサポートされることについて。 ↩
-
Microsoft Learn, Modern Standby Wake Sources. Modern Standby PCが画面オフでもネットワーク(Wi-Fi・モバイルブロードバンド・Ethernet)に接続したまま低電力で待機すること、Wi-Fi・Ethernet・MBBデバイスが継続的な接続を提供してwakeソースになること、リモートデスクトップとファイル共有がEthernet接続時にSoCをwakeできること、Windows 11 version 24H2以降で過度なバッテリー消費を検知すると多くのwakeソースが無効になることについて。 ↩ ↩2
-
Microsoft Learn, Wake On LAN for Surface devices. Modern Standby中のSurfaceデバイスでWake on LANがWindows 10 version 1607以降既定で動作すること、休止(S4)やシャットダウン(S5)からのwakeにはSurface Dock 2などドック側の対応が必要なことについて。 ↩
-
Microsoft Learn, Hibernate Once/Resume Many (HORM). 高速スタートアップを無効にするレジストリ値が
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PowerのHiberbootEnabled(DWORD、0で無効、1で有効)であること、休止状態を無効にするpowercfg /h offが hiberfil.sys を削除することについて。 ↩ ↩2 ↩3 -
Microsoft Learn, Policy CSP - ADMX_WinInit. ポリシー「高速スタートアップの使用を要求する」(Hiberboot、WinInit.admx、コンピューターの構成 > システム > シャットダウン)が高速スタートアップの使用を制御し、有効にすると休止状態が有効であることをシステムが要求し、無効または未構成ならローカルの設定が使われること、レジストリキーが
Software\Policies\Microsoft\Windows\Systemで値名がHiberbootEnabledであること、Intuneから./Device/Vendor/MSFT/Policy/Config/ADMX_WinInit/Hiberbootとして構成できることについて。 ↩ ↩2 ↩3 -
Microsoft Learn, How to troubleshoot unexpected reboots by using the system event logs. イベントID 1074にシャットダウンを要求したプロセス・ユーザー・理由・シャットダウンの種類が記録されること、41と6008が予期しない停止を示すことについて。 ↩
-
Microsoft Learn, How to disable and re-enable hibernation on a computer that is running Windows.
powercfg.exe /hibernate offとonの手順、休止を無効にするとハイブリッドスリープが動作しなくなること、hiberfil.sys がOSをインストールしたドライブのルートにある隠しシステムファイルでサイズがRAM容量とほぼ同じであり、無ければ休止できないことについて。 ↩ ↩2 -
Microsoft Learn, Powercfg command-line options.
/hibernateのon/off、/sizeがメモリ容量に対する割合で休止ファイルのサイズを指定すること、/type reduced | fullで休止ファイルの種類を指定し縮小休止ファイルが hiberboot のみをサポートすること、HiberFileSizePercentが40以上なら完全な休止ファイルとみなされ、縮小に変えるには先に/size 0を実行することについて。 ↩ -
Microsoft Learn, InitiateShutdownA function (winreg.h). Windows 8以降では
SHUTDOWN_HYBRIDを同じ表の1つ以上のフラグと組み合わせて指定すること(高速スタートアップ用の電源オフになるのはSHUTDOWN_POWEROFFとの組み合わせで、SHUTDOWN_RESTARTは再起動、SHUTDOWN_NOREBOOTは電源を切らずに止まるだけ)、SHUTDOWN_HYBRIDが無ければ常に完全なシステムシャットダウンになることについて。 ↩ ↩2 -
Microsoft Learn, ExitWindowsEx function (winuser.h).
EWX_HYBRID_SHUTDOWNが Windows 8 以降でEWX_SHUTDOWNと組み合わせて高速スタートアップに備えたシャットダウンを要求するフラグであること、対話ユーザーでない場合はInitiateSystemShutdown/InitiateSystemShutdownExを使うべきこと、シャットダウンや再起動には呼び出すプロセスがAdjustTokenPrivilegesでSE_SHUTDOWN_NAME特権を有効にしておく必要があること、EWX_SHUTDOWNは電源を安全に切れる状態までシステムを止めるだけで、電源を切るのはEWX_POWEROFFであることについて。 ↩ ↩2 ↩3 ↩4 -
Microsoft Learn, Suspend Services Duration. 電源管理イベントを受け取るよう登録した(
SERVICE_ACCEPT_POWEREVENT)すべてのサービスがサスペンド通知を受け取ること、通知が直列に送られサービスごとに30秒のタイムアウトが適用されること、サービスの観点では高速スタートアップが休止と同様であることについて。 ↩ ↩2 -
Microsoft Learn, SERVICE_STATUS structure (winsvc.h).
dwControlsAcceptedにSERVICE_ACCEPT_SHUTDOWN/SERVICE_ACCEPT_PRESHUTDOWN/SERVICE_ACCEPT_POWEREVENTを立てたサービスだけが、それぞれSERVICE_CONTROL_SHUTDOWN/SERVICE_CONTROL_PRESHUTDOWN/SERVICE_CONTROL_POWEREVENTの通知を受け取ること。 ↩
関連する記事
同じタグを共有する最新の記事です。さらに近い話題で知識を深められます。
アプリから見たWindowsのシャットダウン ── 終了通知・再起動・電源断を正しく生き延びる
Windows Updateの夜間再起動で計測データが壊れた――そんな事故は設計で防げます。WM_QUERYENDSESSIONやPRESHUTDOWNによる終了通知の受け方、数秒で終える後始末、電源断に耐える保存設計までを一次情報で解説します。
Windowsの名前解決の順序 ── hosts・DNSキャッシュ・LLMNR/mDNS・DoH
「名前解決できない」「一部のPCだけ繋がらない」は、hosts・DNSキャッシュ・DNSサーバー・LLMNR/mDNSのどの層が答えたかで結果が変わります。Windowsの名前解決の順序とDoHが変えるものを仕組みから整理し、層ごとに切り分ける手順を解説します。
スリープ復帰で壊れるアプリ ── 電源イベントの仕組みと復帰に強い業務アプリの作り方
ノートPCを開いたら業務アプリの通信が切れていた――原因はスリープを想定しない設計です。WM_POWERBROADCASTによる通知の流れ、Modern Standbyの挙動、切断・再接続の設計、スリープ抑止と調査コマンドまでを一次情報で解説します。
WMI/CIMをC#・PowerShellから使う ── ハードウェア情報取得・プロセス監視・リモート照会の実務ガイド
PCのシリアル番号取得、ディスク空き監視、プロセス起動検知の定番がWMI/CIMです。Get-CimInstance等のCIMコマンドレットの使い方と旧Get-WmiObjectからの移行、C#のSystem.ManagementとCIM APIの使い分け、実例レシピと落と...
Time Travel Debugging ── 長期稼働で再現しない不具合を「録画」して巻き戻す
月に一度しか出ない不具合は、クラッシュダンプでは結果しか写りません。WinDbgのTime Travel Debugging(TTD)で実行を録画して巻き戻す方法を、TTD.exeの録画設計、リングバッファ、TTD.Callsクエリ、ダンプとの使い分けまで解説します。
関連トピック
このテーマと近いトピックページです。記事を起点に、関連するサービスや他の記事へ進めます。
Windows技術トピック
Windows 開発、不具合調査、既存資産活用の技術トピックをまとめた入口です。
このテーマがつながるサービス
この記事は次のサービスページにつながります。近い入口からご覧ください。
Windowsアプリ開発
業務アプリ、装置連携、通信ツールなどの Windows ソフト開発を支援します。
よくある質問
この記事のテーマについて、相談時によくある質問をまとめています。
- 「シャットダウン」しても直らなかった不具合が、「再起動」したら直りました。なぜですか?
- Windows 8以降のクライアントOSでは、高速スタートアップが有効な構成(休止状態をサポートする多くのPCの既定)の「シャットダウン」はハイブリッドシャットダウンになります。ユーザーはサインアウトされますが、カーネル・ドライバー・サービスの状態は休止ファイル(hiberfil.sys)に保存され、次回起動でそのまま復元されます。つまりOSの芯の部分はリセットされていません。一方「再起動」は高速スタートアップの設定に関係なく常に完全なブートサイクルを行うため、ドライバーやサービスの不調がリセットされます。ただし、再起動で直ったことだけで原因を確定はできません。間欠的な不具合がたまたま再現しなかったり、再起動が保留中の更新を完了させたことで直ったりする場合もあるからです。「シャットダウン後は再現し、再起動後は再現しない」を複数回確かめ、システムログのKernel-Bootイベント27で直近の起動が0x1(高速スタートアップ)だったことやドライバー側の記録で裏付けてから、持ち越された状態を原因として扱ってください。不具合の切り分けでは「電源を切って入れ直す」ではなく「再起動する」を使ってください。
- タスク マネージャーの稼働時間が何日もリセットされません。故障ですか?
- 稼働時間のカウンター自体は正しく動いています。毎晩「シャットダウン」しているのに稼働時間が伸び続けるなら、高速スタートアップ(ハイブリッドシャットダウン)の仕様である可能性が高いですが、シャットダウンが失敗して完了していない場合も同じように見えるので、後述のイベント27と周辺のログを確認するまで「故障ではない」と決めつけないでください。稼働時間はカーネルが起動してからの経過時間で、ハイブリッドシャットダウンではカーネルが休止して復元されるだけなので、カウンターは進み続けます。Microsoftのドキュメントも、ユーザー操作によるシャットダウンではカーネル・ドライバー・サービスが再起動ではなく保存・復元されるため、カーネルの再起動間の稼働時間が以前のWindowsより大幅に長くなり得ると明記しています。ただし稼働時間はスリープや休止状態からの復帰、完了しなかったシャットダウンでも保たれるので、確定にはシステムログのKernel-Bootイベント27で直近の起動の種類が0x1(高速スタートアップ)であることを確認してください。稼働時間をリセットしたいときは「再起動」を選ぶか、shutdown /s /t 0 で完全シャットダウンを行います。
- 高速スタートアップはオフにしたほうがいいですか?
- 一律には勧めません。Microsoftは高速スタートアップの無効化を推奨していませんし、一般的なノートPCでは起動が速くなる利点のほうが大きいためです。オフにする価値があるのは、装置PCや検証機のように「電源を切ればすべてが初期化される」ことを前提に運用している端末、他のOSと同じディスクを共有するデュアルブート環境や、別OSから起動してボリュームを書き換える検証機です(この場合は高速スタートアップをオフにするだけでは明示的な休止状態が残るので、powercfg /h off で休止状態も無効にするか、OSを切り替える前の完全シャットダウンを手順で必須にしてください)。ディスク容量を空けたい場合は、高速スタートアップをオフにしても休止ファイル(hiberfil.sys)は消えないので目的を果たせません。高速スタートアップを残したまま休止ファイルを小さくするなら powercfg /h /type reduced、休止状態ごと不要なら powercfg /h off を使います。単に「一度リセットしたい」だけなら、設定を変えずに再起動か shutdown /s /t 0 を使えば済みます。
- シャットダウンした状態のPCをWake on LANで起こせません。
- Windows 10/11では、既定のシャットダウン(ハイブリッドシャットダウン)からも完全シャットダウン(S5)からもWake on LANはサポートされていません。ユーザーがシャットダウンを指示した状態では消費電力ゼロが期待されるため、Windowsはネットワークアダプターをwake用に準備(arm)しません。Wake on LANが使えるのはスリープ(S3)か、ユーザーが明示的に休止状態(S4)を選んだ場合です。ハイブリッドシャットダウンも実体はS4ですが、Windowsはハイブリッドシャットダウンへの遷移のときだけ明示的にWake on LANを無効にします。夜間に起こして更新したい端末は「シャットダウン」ではなく「スリープ」か「休止状態」で運用するか、ファームウェア側のwake機能を確認してください。S3を持たないModern Standby(S0低電力アイドル)機では、スリープ中もネットワークがwakeソースになり得ますが、実際に起こせるかはNIC・ファームウェア・電源条件・OEMの実装に依存するため、運用に組み込む前に実機で確認してください。
- Windows Updateの「更新してシャットダウン」を選んだのに、次に起動しても更新が終わっていません。
- 一部の更新プログラムは完全シャットダウン後の起動でしか適用を完了できず、高速スタートアップ(休止)経由の起動では完了しないことがMicrosoftのサポート情報に明記されています。更新を確実に終わらせたいときは「更新して再起動」を選んでください。Configuration Managerで管理している環境ではConfiguration Manager 2002とWindows 10 21H1でこの遅延が改善されています。
- 自作の業務アプリから shutdown を呼んでいます。どのAPIを使えば完全シャットダウンになりますか?
- InitiateSystemShutdownEx と InitiateSystemShutdown はハイブリッドにはならず、bRebootAfterShutdown を FALSE にすれば電源オフ(完全シャットダウン)、TRUE にすれば再起動になります。InitiateShutdown は SHUTDOWN_HYBRID フラグを SHUTDOWN_POWEROFF と組み合わせて付けたときだけ(SHUTDOWN_RESTART と組み合わせれば再起動、SHUTDOWN_NOREBOOT なら電源を切らずに止まるだけです)、ExitWindowsEx は EWX_SHUTDOWN に EWX_HYBRID_SHUTDOWN を組み合わせたときだけ(EWX_HYBRID_SHUTDOWN 単独では指定しません)高速スタートアップ用のシャットダウンになります。装置PCの「電源オフ」ボタンをアプリで実装しているなら、InitiateSystemShutdownEx を bRebootAfterShutdown = FALSE で呼ぶか、ExitWindowsEx を EWX_POWEROFF だけ(EWX_HYBRID_SHUTDOWN 無し。EWX_SHUTDOWN は電源を安全に切れる状態で止めるだけで電源は切りません)で呼べば、設定に関係なく完全シャットダウンになります(どちらも SE_SHUTDOWN_NAME 特権を AdjustTokenPrivileges で有効にしておくのが前提で、ExitWindowsEx はプロセスのトークン、InitiateSystemShutdownEx は呼び出すスレッドの実効トークンで有効にします。無効のままだと失敗します)。コマンドなら shutdown /s /t 0 が既定で完全シャットダウンで、/hybrid を付けたときだけハイブリッドになります。