מה Fast Startup באמת עושה — למה "Shut down" ב-Windows אינו אותו דבר כמו Restart
· עודכן בתאריך: · Go Komura · Windows, Fast Startup, Shutdown, ניהול צריכת חשמל, מערכות מידע, מחשב ציוד, PowerShell, פיתוח Windows
היסטוריית עדכונים (גרסה ראשונה, פורסמה בתאריך 4 Sep 2026)
- פרסום ראשון
“כיביתי והדלקתי את החשמל מחדש, אבל המדפסת לא מזוהה. אחר כך עשיתי restart, וזה עבד.”
המפתח להבנת ההבדל הזה הוא Fast Startup של Windows. מאז Windows 8, במחשב שתומך ב-hibernation והיכולת הזו מופעלת, “Shut down” אינו פעולה שבונה מחדש את כל מצב Windows. הוא סוגר אפליקציות ואת session המשתמש, אבל שומר את מצב ה-kernel, ה-drivers וה-services ומשחזר אותו באתחול הבא. זה נקרא hybrid shutdown.12
לעומת זאת, “Restart” תמיד מבצע מחזור full boot, בלי קשר להגדרת Fast Startup. “כיבוי והדלקה מחדש” ו-“restart” אינם אותה פעולה.1
המאמר מראה קודם איך לבחור את הפעולה הנכונה, ואז עובר לסיבות, לבידוד לפי תסמין, לאימות, ולהחלטה על שינוי הגדרות. הערות מימוש ל-APIs ול-Windows services מרוכזות בפרק 7. הקוראים המיועדים הם אנשי IT שמנהלים Windows 10/11 ומפתחי אפליקציות Windows למחשבי ציוד ולמכונות בדיקה. PowerShell 5.1 ואילך משמש לבדיקה ולהגדרה.
1. קודם המסקנה: בוחרים את הפעולה שמתאימה למטרה
לפני שכובים Fast Startup לגמרי, מפרידים מה מנסים לעשות.
| מטרה או בעיה | פעולה או תגובה לנסות קודם | פירוט |
|---|---|---|
| לבודד בעיה, או לאפס פעם אחת את מצב Windows | Restart. אבל לא מסיקים את הסיבה רק כי זה תיקן | 3.1, 4.1 |
| לסיים את Windows לגמרי וגם לנתק חשמל | מריצים shutdown /s /t 0 |
3.2 |
| לסיים עדכונים שממתינים | בוחרים “Update and restart” | 4.3 |
| להעיר את המחשב בלילה עם Wake on LAN | בוחנים מחדש את מצב ההמתנה, לא אם Fast Startup דולק או כבוי | 4.4 |
| שכל “shutdown” יאתחל את המכונה | בודקים את תפקיד המכונה, ואז שוקלים כיבוי Fast Startup | פרק 6 |
הבסיס לבחירה הזו הוא שלושת ההבדלים הבאים.134
flowchart TB
accTitle: שלוש פעולות תפריט החשמל ומה קורה בפועל
accDescr: Shut down הוא hybrid shutdown כברירת מחדל ושומר את ה-kernel לקובץ ה-hibernation. Restart תמיד מבצע מחזור full boot. Hibernate שומר גם את session המשתמש לקובץ ה-hibernation.
shutdown["Shut down"] --> hybrid["Hybrid shutdown (ברירת מחדל)"]
hybrid --> saveKernel["שמירת ה-kernel לקובץ ה-hibernation"]
restart["Restart"] --> full["מחזור full boot"]
full --> reinit["בנייה מחדש של kernel, drivers ו-services"]
hibernate["Hibernate"] --> s4["Hibernation (S4)"]
s4 --> saveAll["שמירת כל הזיכרון"]
איור 1: “Shut down” שומר את המצב; “Restart” בונה מחדש את המצב בצד Windows. hibernation רגיל שומר גם את session המשתמש. גם restart אינו מנתק חשמל להתקנים המחוברים.
“לאפס פעם אחת” ו”לשנות איך מכבים בכל פעם” הן החלטות נפרדות. למחשבים ניידים עסקיים רגילים, הבחירה המעשית היא להשאיר דולק ולעשות restart כשצריך. גם Microsoft אינה ממליצה לכבות Fast Startup באופן גורף.1
ב-diagram, solid line מציינת relation שתמיד מתקיים ו-dashed line מציינת relation מותנה (התנאים מופיעים בהסבר של כל relation ב-detail page). הרשימה המלאה של ה-relations (סה”כ 24, כולל evidence ו-certainty) וההגדרות של ה-concepts המרכזיים נמצאות ב-detail page של ה-knowledge map (ביפנית). Data: JSON-LD / Turtle
2. איך זה עובד: Windows “משחזר” את מצבו במקום לבנות אותו מחדש
2.1 איפה זה מתפצל מ-full shutdown
ל-Windows יש שלושה מצבי אתחול: cold boot מסורתי, resume מ-hibernation, ו-Fast Startup שהוצג ב-Windows 8. ב-cold boot, ה-boot loader טוען את ה-kernel לזיכרון ומקשר אותו, וה-kernel מגדיר את הליבה, מונה את ההתקנים המחוברים וטוען drivers. Fast Startup במקום זה קורא בחזרה את המצב שכבר אותחל מקובץ ה-hibernation.5
ההכנה לקריאה בחזרה קורה ב-shutdown הקודם. עד סגירת אפליקציות ו-sign-out של כל המשתמשים, זה זהה ל-full shutdown. אחר כך הנתיבים מתפצלים.51
| שלב | Full shutdown | Hybrid shutdown |
|---|---|---|
| אפליקציות ו-sessions של משתמש | סוגרים אפליקציות ועושים sign-out לכל המשתמשים | אותו דבר |
| Session של ה-kernel | נסגר | לא נסגר; נכנס ל-hibernation |
| עיבוד לפני ניתוק החשמל | מכבים את המערכת | שולחים ל-drivers את ה-power IRP להכנה ל-hibernation, ושומרים את תמונת הזיכרון, כולל kernel-mode drivers, ל-hiberfil.sys |
| בהדלקה הבאה | מאתחלים kernel, drivers וכן הלאה | קוראים בחזרה את המצב השמור וממשיכים |
גם מה ש-drivers מקבלים אינו הודעת shutdown אלא power IRP שמכריז על מעבר ל-hibernation. אף על פי שזה נראה כמו כיבוי למשתמש, ליבת Windows אינה מסתיימת; היא נשמרת עד האתחול הבא.5
2.2 מה נשמר ומה נסגר
הגבול עובר בין sessions של המשתמש (ה-sessions האינטראקטיביים, Session 1 ואילך) לבין session של ה-kernel (Session 0).62
| פריט | טיפול בזמן hybrid shutdown |
|---|---|
| אפליקציות פתוחות, מצב sign-in | מסתיימים כש-session המשתמש יוצא ב-sign-out |
| Services לפי משתמש | נעצרים ונמחקים ב-sign-out |
| ה-kernel ו-kernel-mode drivers שנטענו | המצב נשמר לקובץ ה-hibernation ומשחזר באתחול הבא |
| System services של Session 0 | לא נעצרים ומתחילים מחדש; נכנסים ל-hibernation ומשחזרים עם מצבם |
Services לפי משתמש ו-services של Session 0 שניהם “services”, אבל מטופלים אחרת. הראשונים נוצרים ב-sign-in ונעצרים ונמחקים ב-sign-out, ולכן אינם נשמרים.7
בצד שנשמר, לעומת זאת, נשארים מצב פנימי של drivers ו-handles, זיכרון ו-caches פנימיים ש-system services מחזיקים. גם תיעוד החומרה של Microsoft מסביר שכי ה-kernel, ה-drivers וה-services נשמרים ומשחזרים במקום לעבור restart, ה-uptime בין restart-ים של ה-kernel יכול להיות ארוך מגרסאות Windows קודמות, ומבקש לנטר memory leaks ב-drivers וב-services.2
2.3 איך זה שונה מ-hibernation רגיל
Hibernation רגיל שומר את כל הזיכרון, כולל sessions של המשתמש. Fast Startup קודם עושה sign-out למשתמשים ואז שומר. זה מקטין את קובץ ה-hibernation ומאיץ גם את הכתיבה וגם את הקריאה בחזרה.26
במונחי מצבי חשמל, full shutdown הוא S5 ו-hibernation הוא S4. Hybrid shutdown נראה כמו S5 למשתמש אבל בפועל עובר דרך S4. עם זאת, התגובה לאזעקות wake של התקנים מטופלת כאילו המערכת ב-S5. אף על פי שזה אותו S4, לא הכול מתנהג כמו ב-hibernation רגיל, וההבדל הזה חשוב ל-Wake on LAN ב-4.4.6
2.4 האתחול הבא “ממשיך” במקום “מאתחל”
אתחול מ-Fast Startup מתקדם בסדר הזה: אתחול firmware, קריאת קובץ ה-hibernation, resume של התקנים, resume של Winlogon, ואתחול Explorer. קובץ ה-hibernation מחזיק את הקשר המערכתי שנכתב ב-shutdown.8
מה שחשוב כאן הוא שההתקנים עוברים resume, לא אתחול. אם driver החזיק פנימית מצב רע, כמו ציוד היקפי שלא מזוהה או התקן USB שלא מגיב אחרי resume, המצב הזה יכול להישמר גם כן.
“Restart” אינו משתמש בנתיב השמירה-והשחזור הזה; הוא תמיד עובר full boot. הסיבה ש-restart נדרש אחרי התקנת driver, או אחרי עדכון רכיבי Windows שאי אפשר להחליף בלי restart מלא, היא בדיוק לבנות מחדש את המצב בצד Windows.1
3. איפוס או full shutdown בלי לשנות הגדרות
3.1 כדי לאפס ולהמשיך להשתמש במחשב: “Restart”
כדי לבודד בעיה, או להחזיר את Windows למצב נקי פעם אחת, בוחרים “Restart” מתפריט החשמל. כי זה אינו תלוי בהגדרת Fast Startup, זו גם הפעולה האמינה לכתוב בנוהלים.1
שימו לב, עם זאת, ש-restart הוא מחזור full boot, לא פעולה שמשאירה את המחשב כבוי (S5). כשצריך לסיים את Windows לגמרי ולנתק חשמל, למשל לפני טיפול בדיסק מ-OS אחר, משתמשים בשיטה הבאה.
3.2 כדי לנתק גם חשמל: shutdown /s /t 0
שומרים את העבודה, ואז מריצים את הפקודה הבאה.
shutdown /s /t 0
ה-/s של Shutdown.exe הוא full shutdown כברירת מחדל. משלבים /hybrid עם /s רק כשרוצים hybrid shutdown. ל-“Shut down” של תפריט החשמל ול-/s של הפקודה יש התנהגות ברירת מחדל שונה.19
ברצף shutdown של מחשב ציוד או ב-batch file, הפקודה הזו הופכת את הכוונה, “לסיים לגמרי ולנתק חשמל”, לחד-משמעית. שימו לב ש-/g עושה full shutdown ואז restart, וממשיך אפליקציות רשומות אם Automatic Restart Sign-On (ARSO) מופעל; זו אינה אפשרות להישאר כבוי.9
3.3 שיטת מקש Shift, וקריאה מאפליקציה
בחירת “Shut down” תוך החזקת מקש Shift מבצעת full shutdown לפעם הזו בלבד. עם זאת, הנוהל הזה מתואר בתשובת תמיכה ב-Microsoft Q&A, לא במקור רשמי. אם משתמשים בו בתפעול, מאמתים את התוצאה עם ה-uptime או Event 27 שמתוארים בפרק 5; לנוהלים שפונים למשתמש, “Restart” או shutdown /s /t 0 היא הבחירה הבטוחה יותר מבחינת אמינות.10
אפליקציה יכולה גם לבצע full shutdown דרך ה-API, למשל בקריאה ל-InitiateSystemShutdownEx עם bRebootAfterShutdown מוגדר ל-FALSE. הדגלים לכל API, ההבדל בין ניתוק חשמל ל-restart, וההרשאה הנדרשת מסוכמים בפרק 7.11
4. בידוד הסיבה לפי תסמין
המנגנון שתואר עד כאן מסביר uptime ובעיות שנשמרות. אבל לא מניחים שהתסמין מולכם נגרם מ-Fast Startup. Wake on LAN בפרט צריך בידוד כאילוץ נפרד.
4.1 Shutdown לא מתקן, אבל Restart כן
הדבר הראשון לעשות הוא לבדוק אם הבעיה משתחזרת אחרי restart. אם היא נעלמת אחרי restart, ההשערה שמצב שנשמר ב-driver או ב-service הוא הסיבה מתחזקת.
זה אינו מאושר, עם זאת, רק כי restart תיקן. בעיה לסירוגין פשוט אולי לא הופיעה, או שה-restart השלים עדכון שהמתין. לפני שמתייחסים לזה כסיבה, משיגים את האימות הבא.
- מאשרים כמה פעמים ש”זה משתחזר אחרי shutdown ולא משתחזר אחרי restart”.
- מאשרים עם Kernel-Boot Event 27 שמתואר בפרק 5 שהאתחול האחרון היה Fast Startup (
0x1). - משווים מול רישומים בצד ה-driver ב-Device Manager ובלוג System.
גם אחרי אימות, אין צורך לשנות את ההגדרה בכל מכונה מיד. ברוב המקרים, תיקון הנוהל מ-“כיבוי והדלקה מחדש” ל-“restart” מספיק. האם מכונה צריכה אתחול מובטח בכל shutdown מחליטים בפרק 6.
כש-shutdown עצמו נכשל וחוזר למסך הנעילה, נדרשת בדיקה אחרת. Shutdown עם Fast Startup מופעל רץ כ-hibernation, ובאמצע הוא מאתחל את תצורת memory dump. אם לא ניתן לטעון את dump filter driver, ה-hibernation נכשל, Event ID 45 נרשם, והמערכת חוזרת למסך הנעילה. המקום ש-Microsoft מפנה אליו הוא DumpFilters תחת HKLM\SYSTEM\CurrentControlSet\Control\CrashControl. התייחסות לתסמין הזה כ”כשל hibernation” ולא כ”כשל shutdown” מבהירה איפה לבדוק.1
4.2 Uptime לא מתאפס אף שמכבים כל לילה
“Performance” > “CPU” ב-Task Manager לפעמים מציג uptime של ימים רבים. ב-hybrid shutdown ה-kernel רק נכנס ל-hibernation ומשחזר, כך שזמן האתחול של ה-kernel אינו מתעדכן.2
ב-WMI, uptime מתקבל מ-Win32_OperatingSystem.LastBootUpTime על ידי חיסור זמן האתחול מהזמן הנוכחי. Restart, שעובר full boot, ואתחול אחרי full shutdown מעדכנים את זמן האתחול הייחוס הזה.12
Get-Uptime ב-PowerShell 6 ואילך משתמש במונה ticks של טיימר ברזולוציה גבוהה מאז תחילת המערכת. לכן ערכו יכול להיבדל מעט מזה שנגזר מ-WMI, אבל הוא זהה בכך שהוא לוקח את אתחול ה-kernel כייחוס.13
לא מסיקים לא תקלה ולא Fast Startup מ-uptime ארוך לבדו. Uptime נשמר גם ב-sleep, ב-hibernation מפורש, וב-shutdown שלא הסתיים. בודקים Event 27 ואת רשומות הלוג סביבו לפני שמסבירים.
וגם, ניטור כמו “לבקש restart כש-uptime עובר 30 יום” יזהיר משתמשים שמכבים כל יום. הניטור אינו שגוי. ניסוח ההודעה כ”נא לעשות restart” נמנע מהבלבול של “אבל כיביתי אמש”.
4.3 עדכונים לא מסתיימים גם אחרי “Update and shut down”
כדי לסיים עדכון, בוחרים “Update and restart”. מאמר התמיכה של Microsoft (KB4011287) מסביר שחלק מהעדכונים יכולים להסתיים רק באתחול שאחרי full shutdown, ועשויים להישאר ממתינים כשהאתחול עובר דרך hibernation של Fast Startup. ההתנהגות הזו אינה מתרחשת עם restart.3
כש”Updating” מופיע שוב בבוקר אחרי “Update and shut down”, בדרך כלל זה אינו כשל עדכון; העיבוד שהמתין ל-full boot פשוט מתקדם באתחול הזה. אם Fast Startup כבוי, גם “Update and shut down” עובר full boot, כך שההנחה משתנה.
אותו מאמר תמיכה גם מציין שההשהיה בהשלמת עדכונים בסביבות שמנוהלות ב-Configuration Manager טופלה ב-Configuration Manager 2002 וב-Windows 10 21H1.3
4.4 Wake on LAN לא יכול להעיר מחשב שכובה
כיבוי Fast Startup לבדו אינו פותר את הבעיה הזו. ב-Windows 10/11, Wake on LAN (WOL) ככל שנוגע ל-Windows אינו נתמך לא מ-hybrid shutdown ולא מ-full shutdown (S5).414
| מצב המתנה | טיפול WOL ככל שנוגע ל-Windows |
|---|---|
| Sleep מסורתי (S3) | נתיב נתמך. תלוי ב-NIC ובהגדרות wake, עם זאת |
| Hibernation (S4) שהמשתמש בחר במפורש | נתיב נתמך. תלוי ב-NIC ובהגדרות wake, עם זאת |
| Hybrid shutdown (בפועל S4) | ה-NIC אינו מוכן ל-wake; לא נתמך |
| Full shutdown (S5) | לא נתמך |
| Modern Standby (S0 low-power idle) | הרשת יכולה להיות מקור wake, אבל צריך לבדוק דגם ותנאי חשמל |
אף על פי ששניהם S4, Windows מטפל ב-“Hibernate” וב-“Shut down” אחרת. לפי ההסבר של Microsoft, משתמש שמורה על shutdown מצפה לצריכת חשמל אפס, ולכן Windows אינו מכין את ה-NIC ל-wake במעבר ל-hybrid shutdown. הכיבוי הזה אינו מבוצע במעבר ל-hibernation מפורש.4
גם ב-Windows 7, WOL מ-full shutdown ברירת המחדל (S5) לא היה נתמך רשמית. היו, עם זאת, דגמים שבהם ה-NIC נשאר מוכן ל-wake אם נשאר חשמל שיורי. ההבדל מ-hybrid shutdown ברירת המחדל של Windows 10 הוא ש-Windows מכבה wake במפורש.4
לא ניתן להכליל מכונות Modern Standby כ”תמיד מתעוררות כל עוד הן ישנות”. דגם שמציג “S0 Low Power Idle” ב-powercfg /a אין לו S3. ב-Modern Standby המערכת ממשיכה לרוץ בהספק נמוך גם כשהמסך כבוי, ו-Wi-Fi, Ethernet ו-mobile broadband שומרים על החיבורים ויכולים להיות מקורות wake. התיעוד של Microsoft גם מציין ש-Remote Desktop ושיתוף קבצים יכולים להעיר את ה-SoC דרך חיבור Ethernet.15
אותו תיעוד, עם זאת, גם מפרט את התנאים הבאים.15
- ב-disconnected standby אפליקציות לא יכולות להשתמש ברשת, ובסוללה מחסנית הרשת עשויה להתחיל להתנתק.
- LAN קווי אינו כשיר כ-Modern Standby capable אלא אם הוא תומך ב-pattern-match offload.
- ב-Windows 11 גרסה 24H2 ואילך, מקורות wake רבים כבויים כשמזוהה ניקוז סוללה מוגזם.
ב-Surface, WOL בזמן Modern Standby מצוין כעובד כברירת מחדל מאז Windows 10 גרסה 1607, אבל זו אינה הבטחה למחשבים ניידים מיצרנים אחרים. האם PC באמת ניתן להעיר נקבע לפי ה-NIC, ה-firmware, תנאי החשמל AC/DC, והמימוש של ה-OEM, לכן מאמתים במכונה אמיתית לפני שבונים את זה לתפעול ללא השגחה כמו משימות לילה.16
יש גם דגמים שה-firmware והחומרה שלהם יכולים להכין את ה-NIC ל-wake מ-S4/S5 בעצמם. במקרה הזה Windows אינו מעורב. “חלק מהדגמים כן מתעוררים מ-shutdown” מתייחס לחריג הזה.4
תפעולית, הגישה הבסיסית היא להשאיר את המכונה שרוצים להעיר ממתינה ב-“Sleep” או “Hibernate”. גם אם “Wake on Magic Packet” והגדרות דומות של ה-NIC מוגדרות נכון, ה-PC לא יתעורר אם מעבר החשמל של ה-OS כיבה wake. איך drivers מבחינים בין השניים מוסבר ב-7.5. ראו גם “Sleep, hibernation, Modern Standby ואפליקציות ארוכות-ריצה” להתנהגות Modern Standby ו-“הגדרות Advanced של NIC ב-Windows: RSS, LSO, EEE ו-Wake on LAN” להגדרות NIC.
4.5 Dual boot, או טיפול באותו דיסק מ-OS אחר
הסעיף הזה הוא אזהרה שנגזרת מהמנגנון, על בסיס המקורות הראשוניים על מצבי חשמל. ב-hybrid shutdown, תמונת הזיכרון של ה-kernel נשמרת ומשחזרת באתחול הבא.6
כתיבות ממתינות מיושמות לדיסק בנקודת הכניסה ל-hibernation, אבל caches של file system driver וההנחות שלו על מבנה ה-volume נשארים בקובץ ה-hibernation. אם OS אחר (Linux, Windows PE וכן הלאה) כותב לאותו volume NTFS בינתיים, התצוגה הישנה ש-Windows משחזר באתחול הבא לא תסכים עם מה שבאמת על הדיסק.
הסכנה אינה hibernation עצמו אלא Windows שמשחזר את המצב הישן אחרי ש-OS אחר שינה את הדיסק. כש-NTFS driver בצד Linux מסרב לכתוב ל-volume ב-hibernation, או מעלה אותו לקריאה בלבד, זו התנהגות נכונה שנועדה למנוע בדיוק את אי-העקביות הזו.
במכונה שמטפלת באותו דיסק מכמה מערכות הפעלה, או מכונת בדיקה שעולה OS נפרד לתיקון, בונים אחד מהבאים לתפעול.
- מכבים Fast Startup וגם מכבים hibernation מפורש עם
powercfg /h off. - דורשים את ה-full shutdown מפרק 3 לפני החלפת מערכות הפעלה.
כיבוי Fast Startup לבדו משאיר hibernation מפורש זמין. מודעים לכך שכתיבה מ-OS אחר בזמן ש-Windows ב-hibernation גורמת לאותה אי-עקביות.
4.6 שינויי הגדרות firmware או תצורת התקנים לא נכנסים לתוקף
אם שיניתם הגדרות UEFI או תצורת ציוד היקפי, ועדיין נראה שהמצב הישן נשאר גם אחרי כיבוי והדלקה, עושים restart כדי לעבור full boot. עם Fast Startup, drivers לוקחים את נתיב ה-resume, לא את נתיב האתחול של cold boot.
Microsoft מבקשת ש-drivers שמגדירים התקן אחרת ב-cold boot וב-resume מ-hibernation יגדירו אותו כמו ב-cold boot אחרי Fast Startup. ב-drivers שלא ממומשים כך, נתיב ה-resume הופך לבעיה. איך driver מבדיל בין השניים מסוכם ב-7.5.5
5. בדיקת ה”הגדרה” ו”נתיב האתחול בפועל” בנפרד
גם כש-Fast Startup מופעל בהגדרות, האתחול האחרון לא בהכרח לקח את הנתיב הזה. קוראים בנפרד את המידע שאומר לכם את ההגדרה ואת המידע שאומר לכם את תוצאת האתחול.
5.1 ארבעה מקומות לבדיקה
| איפה בודקים | מה זה אומר | סייג |
|---|---|---|
| Uptime ב-Task Manager | האם הזמן מצטבר מאז שה-kernel עלה | הרמז הראשון. הוא גם ממשיך ב-sleep, hibernation ו-shutdown שנכשל, לכן לא מסיקים ממנו לבדו |
| Kernel-Boot, Event ID 27 בלוג System | סוג האתחול האחרון | משווים מול ה-uptime כדי לאשר את הנתיב בפועל |
powercfg /a |
מצבי חשמל זמינים; האם קובץ hibernation קיים וסוגו | עם קובץ hibernation מוקטן, Fast Startup זמין אף על פי ש-hibernation רגיל אינו |
HiberbootEnabled מקומי ושל policy |
הגדרת Fast Startup | ערך policy של 0 אינו אומר “כיבוי כפוי” |
איך לחשוב על uptime מכוסה ב-4.2, והקשר בין קובץ ה-hibernation להגדרה מוסבר גם ב-6.3 ו-6.4.261718
5.2 איך לקרוא Event 27
Kernel-Boot Event 27 רושם באתחול ערך כמו “The boot type was 0x1”. משמעות הערך אינה מתועדת במקור הרשמי, אבל המיפוי הבא ידוע בהרחבה.
| ערך | סוג אתחול |
|---|---|
0x0 |
Full boot |
0x1 |
Fast Startup |
0x2 |
Resume מ-hibernation |
גם אם ה-uptime ממשיך, ערך אחרון של 0x2 פירושו resume מ-hibernation רגיל, לא Fast Startup. לא מסבירים מה-uptime לבדו; משלבים עם Event 27.
5.3 בדיקה של הכול בבת אחת עם PowerShell
הסקריפט הבא מציג יחד את ההגדרה, קובץ ה-hibernation, ה-uptime וסוג חמשת האתחולים האחרונים. רוב קריאות ה-Registry ולוג האירועים עובדות בלי הרשאות Administrator, אבל powercfg /a דורש הרשאות Administrator בחלק מהסביבות.
# מציגים יחד את הגדרת Fast Startup ואת סוג האתחולים האחרונים
$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"
# בלי קובץ hibernation (powercfg /h off), Fast Startup אינו עובד ללא קשר לערך ב-Registry.
# ה-policy "Require use of fast startup" גובר על ההגדרה המקומית רק כשהוא Enabled (1).
# אם ערך ה-policy הוא 0 או לא מוגדר, משתמשים בהגדרה המקומית (אין ערך = מופעל כברירת מחדל)
$effective =
if (-not $hiberfil) { 'לא זמין (אין קובץ hibernation: מצב powercfg /h off)' }
elseif ($null -ne $policy -and $policy.HiberbootEnabled -eq 1) { 'מופעל (כפוי ב-policy)' }
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
# סוג חמשת האתחולים האחרונים (0x0 = full boot, 0x1 = Fast Startup, 0x2 = resume מ-hibernation)
Get-WinEvent -FilterHashtable @{ LogName = 'System'; ProviderName = 'Microsoft-Windows-Kernel-Boot'; Id = 27 } -MaxEvents 5 |
Select-Object TimeCreated, Message
# מצבי שינה זמינים וסוג קובץ ה-hibernation
powercfg /a
ההגדרה האפקטיבית שמוצגת כאן נקבעת בסדר הזה: האם קובץ hibernation קיים, האם ה-policy כופה הפעלה, ומה ההגדרה המקומית. אם ערך ה-policy הוא 0 או לא מוגדר, משתמשים בהגדרה המקומית, ובלי קובץ hibernation Fast Startup אינו זמין יהיו ערכי ההגדרה אשר יהיו.
5.4 “מי ביקש את ה-shutdown” נמצא בלוג אחר
Event ID 1074 (User32) בלוג System רושם את התהליך המבקש, המשתמש וקוד הסיבה, ואת הפעולה המבוקשת (כיבוי, restart וכן הלאה). עם זאת, כי גם hybrid וגם full shutdown נרשמים ככיבוי, 1074 לבדו אינו מבחין בין השניים. מאשרים את הנתיב בפועל עם Event 27 באתחול הבא.
עצירות בלתי צפויות מבודדות מהרצף עם 41 (Kernel-Power) ו-6008 (EventLog).19 הנוהל לאיתור “מחשב הציוד עמד בבוקר” מכוסה ב-“Shutdown ב-Windows מנקודת המבט של האפליקציה”.
6. החלטה אם לכבות Fast Startup, ואיך
6.1 מחליטים לפי תפקיד המכונה, לא באופן גורף
Microsoft מפעילה Fast Startup כברירת מחדל ואינה ממליצה לכבות אותו. יש לו תועלת בזמן אתחול, ותיעוד החומרה מתייחס לקריאה ולכתיבה של קובץ ה-hibernation כעיבוד חשוב מספיק כדי להסביר כ-50% מזמן האתחול. במחשב נייד רגיל אין סיבה לכבות באופן גורף.12
שני הצירים להחלטה הם “האם התפעול מניח שכיבוי מאתחל את המכונה?” ו-“האם OS אחר ישנה את אותו volume?” שני אלה בלתי תלויים. לא עוצרים ב”כיבינו כי זה מחשב ציוד”; בודקים גם אם OS אחר כותב לדיסק.
| תפקיד המכונה או מטרה | תגובה מומלצת | סיבה |
|---|---|---|
| מחשב ציוד או מחשב מדידה שבו אתחול בכיבוי הוא הנחת תפעול | מכבים | במקום שבו אי אפשר לשנות את הנוהל ל-“restart”, מבטיחים אתחול דרך ההגדרה |
| מכונת בדיקה, או מכונה שמטפלת באותו דיסק מכמה מערכות הפעלה | בנוסף לכיבוי, גם מכבים hibernation, או דורשים full shutdown לפני החלפת OS | עצירת Fast Startup לבדה משאירה את אי-העקביות שנגרמת מ-hibernation מפורש (4.5) |
| מכונה שצריך להעיר בלילה ב-WOL | בוחנים מחדש את מצב ההמתנה, לא את ההגדרה | גם כשכבוי, WOL מ-S5 אינו נתמך. מכונות Modern Standby צריכות אימות במכונה אמיתית (4.4) |
| מכונה עם אחסון קטן | שוקלים קובץ hibernation מוקטן | מכווץ את קובץ ה-hibernation תוך שמירה על Fast Startup (6.4) |
| מחשב נייד עסקי רגיל | משאירים דולק ועושים restart כשצריך | שומר על האתחול המהיר, ובידוד אפשר לעשות עם restart |
| מכונה דמוית שרת שתמיד דולקת ומעולם לא מכובה | כל אחת בסדר | אם מעולם לא מכבים, להגדרה אין אפקט, ו-restart הוא תמיד full boot |
6.2 שינוי מכונה אחת בכל פעם: Control Panel
גם ב-Windows 10 וגם ב-11, המקום לשנות הוא Control Panel, לא אפליקציית Settings.4
- פותחים “Power Options” ובוחרים “Choose what the power buttons do”.
- אם הפריטים אפורים, לוחצים “Change settings that are currently unavailable” (דורש הרשאות Administrator).
- מבטלים את סימון “Turn on fast startup (recommended)”.
- שומרים את השינויים.
אם הפריט עצמו אינו מוצג, hibernation כבוי ואין קובץ hibernation. ראו את ההסבר של powercfg /a ושל קובץ ה-hibernation ב-6.4.
6.3 הגדרת מכונות רבות: מבחינים בין Registry ל-policy
ההגדרה המקומית היא HiberbootEnabled (DWORD) תחת HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power. 0 מכבה ו-1 מפעיל, ותיבת הסימון ב-Control Panel קוראת וכותבת את אותו ערך.17
# מריצים ב-PowerShell שנפתח כ-administrator. מכבה Fast Startup
$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
עם זאת, אם ה-policy “Require use of fast startup” הוא Enabled, ה-policy גובר על הערך המקומי. גם אם מגדירים את הערך המקומי ל-0 וקוראים בחזרה 0, Fast Startup נשאר מופעל. במקרה הזה, קודם מחזירים את ה-policy ל-Disabled או Not Configured.18
| מצב policy | תוצאה |
|---|---|
| Enabled | דורש Fast Startup ודורש ש-hibernation יהיה מופעל. גובר על ההגדרה המקומית |
| Disabled או Not Configured | משתמשים ב-HiberbootEnabled המקומי. אינו כופה כיבוי Fast Startup |
ה-policy הזה נמצא ב-WinInit.admx תחת “Computer Configuration > Administrative Templates > System > Shutdown”. הוא כותב ל-HiberbootEnabled תחת HKLM\SOFTWARE\Policies\Microsoft\Windows\System. ב-Intune אפשר להגדיר אותו כ-Policy CSP ADMX_WinInit/Hiberboot.18
כדי לגלגל כיבוי באופן גורף, מפיצים את HiberbootEnabled = 0 המקומי עם Group Policy Preferences או תצורת Intune. מפעילים את ה-policy הזה כשרוצים לכפות הפעלה כך שמשתמשים לא יוכלו לכבות.
flowchart TB
accTitle: שלוש השכבות של הגדרת Fast Startup
accDescr: אם ה-policy Require use of fast startup הוא Enabled, Fast Startup מופעל בעדיפות על ההגדרה המקומית; אם אינו מוגדר, משתמשים ב-HiberbootEnabled המקומי. בכל נתיב, Fast Startup אינו זמין אלא אם קובץ hibernation קיים
policy{"Policy: Require use of fast startup"}
policy -->|"מופעל"| forced["כפיית הפעלה (ההגדרה המקומית מתעלמת)"]
policy -->|"כבוי או לא מוגדר"| local{"מקומי: HiberbootEnabled"}
local -->|"1 (ברירת מחדל)"| on["מופעל"]
local -->|"0"| off["כבוי"]
forced --> hib{"האם קובץ ה-hibernation (hiberfil.sys) קיים?"}
on --> hib
hib -->|"כן (מלא או מוקטן)"| works["Fast Startup עובד"]
hib -->|"לא (powercfg /h off)"| none["Fast Startup לא זמין"]
איור 2: ה-policy הוא הגדרה שכופה הפעלה. כיבוי מופץ דרך ערך Registry מקומי, ובכל נתיב Fast Startup אינו זמין בלי קובץ hibernation.
השינוי נכנס לתוקף מה-shutdown הבא. לאימות, מבצעים “Shut down” רגיל, מדליקים, ובודקים ש-Event 27 הוא 0x0. Restart הוא full boot בלי קשר להגדרה, ולכן אי אפשר להשתמש בו לאימות הכיבוי. קריאה בחזרה של ה-Registry מאשרת את ערך ההגדרה; Event 27 מאשר את הנתיב בפועל.
6.4 powercfg /h off אינו אותו דבר כמו “כיבוי Fast Startup בלבד”
Fast Startup מסתמך על קובץ ה-hibernation, hiberfil.sys. powercfg /hibernate off (powercfg /h off) היא הפעולה שמוחקת את קובץ ה-hibernation הזה. לא רק Fast Startup אלא גם hibernation רגיל ו-hybrid sleep הופכים ללא זמינים.206
הגדרת HiberbootEnabled = 0, לעומת זאת, משאירה את קובץ ה-hibernation במקום. משנים את היעד הנכון לכל מטרה.
| מטרה | הגדרה או פקודה | מה נשאר ומה אובד |
|---|---|---|
| לעצור רק Fast Startup | HiberbootEnabled = 0 |
קובץ ה-hibernation נשאר. אם הוא מסוג full, גם hibernation רגיל נשאר |
| לכווץ את הקובץ אבל לשמור Fast Startup | powercfg /h /type reduced |
קובץ hibernation מוקטן (20% מהזיכרון הפיזי כברירת מחדל). Hibernation רגיל ו-hybrid sleep אינם זמינים |
| לחזור לסוג שמאפשר גם hibernation רגיל | powercfg /h /type full |
קובץ hibernation מלא (40% מהזיכרון הפיזי כברירת מחדל). לא מומלץ במכונות עם פחות מ-32 GB אחסון |
| לוותר על hibernation לגמרי | powercfg /h off |
מוחק את קובץ ה-hibernation. Fast Startup, hibernation ו-hybrid sleep כולם הופכים ללא זמינים |
קובץ hibernation מלא תומך ב-hibernation, hybrid sleep ו-Fast Startup. Hybrid sleep דורש S3, עם זאת, כך שבמכונת Modern Standby בלי S3 אי אפשר להשתמש בו גם עם קובץ hibernation מלא. קובץ hibernation מוקטן תומך רק ב-Fast Startup. במחשב שכבר היה מסוג reduced, כיבוי Fast Startup בלבד אינו הופך hibernation רגיל או hybrid sleep לזמינים.6
קוראים את הפלט של powercfg /a עם ההבחנה הזו גם כן.
| קובץ hibernation | מה מוצג על hibernation רגיל | Fast Startup |
|---|---|---|
| Full | זמין | זמין |
| Reduced | “Hibernation is not supported” | זמין |
| None | “Hibernation has not been enabled” | לא זמין |
אם /type reduced נכשל עם “The parameter is incorrect”, זה כי גודל קובץ ה-hibernation הוגדר ידנית ליותר מ-40%. קודם מריצים powercfg /h /size 0 כדי להחזיר את הגודל לניהול ה-OS, ואז מריצים שוב.621
במכונה ש-OS אחר משנה בה את אותו volume, ה-hibernation הרגיל שנשאר גורם לאותה אי-עקביות כמו ב-4.5. לא עוצרים בכיבוי Fast Startup; גם מכבים hibernation, או דורשים full shutdown לפני החלפת OS.
7. למפתחים: APIs של shutdown וסייגים ל-services
7.1 ה-API מציין “איזו פעולה”, לא רק “hybrid או לא”
ל-APIs של shutdown שנקראים מאפליקציה יש התנהגות ברירת מחדל שונה מתפריט החשמל. לפי התיעוד של Microsoft, InitiateSystemShutdownEx ו-InitiateSystemShutdown אף פעם לא הופכים ל-hybrid, בעוד InitiateShutdown ו-ExitWindowsEx מבקשים hybrid עם דגל מפורש.26
| API | Full shutdown שמכבה חשמל | Shutdown ל-Fast Startup |
|---|---|---|
InitiateSystemShutdownEx / InitiateSystemShutdown |
bRebootAfterShutdown = FALSE |
אף פעם לא hybrid |
InitiateShutdown |
מציינים SHUTDOWN_POWEROFF בלי SHUTDOWN_HYBRID |
משלבים SHUTDOWN_POWEROFF עם SHUTDOWN_HYBRID |
ExitWindowsEx |
מציינים EWX_POWEROFF בלי EWX_HYBRID_SHUTDOWN |
משלבים EWX_SHUTDOWN עם EWX_HYBRID_SHUTDOWN |
SHUTDOWN_HYBRID אינו מצוין לבדו; הוא משולב עם דגל אחד או יותר מאותה טבלה. מביניהם, השילוב שנותן כיבוי ל-Fast Startup הוא זה עם SHUTDOWN_POWEROFF. גם EWX_HYBRID_SHUTDOWN אינו בשימוש לבדו אלא משולב עם EWX_SHUTDOWN.2223
הסרת דגל hybrid לבדה אינה קובעת את הפעולה. נדרשות גם ההבחנות הבאות.112223
| ארגומנט או דגל | הפעולה שמבוצעת |
|---|---|
bRebootAfterShutdown = TRUE, SHUTDOWN_RESTART, EWX_REBOOT |
Restart |
SHUTDOWN_NOREBOOT |
עוצר את המערכת אבל אינו מכבה חשמל |
EWX_SHUTDOWN |
עוצר את המערכת עד נקודה שבה אפשר לכבות חשמל בבטחה, אבל אינו מכבה |
ExitWindowsEx עם uFlags = 0 |
EWX_LOGOFF, כלומר sign-out |
אם מממשים כפתור “כיבוי” במסוף kiosk או במחשב ציוד, קוראים ל-InitiateSystemShutdownEx עם bRebootAfterShutdown = FALSE, או ל-ExitWindowsEx עם EWX_POWEROFF, ולא מוסיפים את דגל hybrid. מה שחשוב הוא לשמור על מפרט הכיבוי הנדרש, לא “בלי דגלים”.
7.2 מפעילים את ההרשאה על ה-token הנכון לפני הקריאה
עם כל אחד מה-APIs האלה, כיבוי ה-PC המקומי דורש שהרשאת SE_SHUTDOWN_NAME תהיה מופעלת מראש עם AdjustTokenPrivileges. כברירת מחדל, משתמש מחובר יכול להפעיל את ההרשאה הזו, אבל אם קוראים כשהיא עדיין כבויה, ה-API נכשל ושום shutdown לא מתחיל.1123
ה-token שעליו מפעילים אותה נבדל לפי API.
| API | Token שעליו מפעילים את ההרשאה |
|---|---|
ExitWindowsEx |
ה-token של התהליך הקורא. פותחים אותו עם OpenProcessToken |
InitiateSystemShutdown(Ex) / InitiateShutdown |
ה-token האפקטיבי של ה-thread הקורא. token של ה-thread אם עושים impersonation; אחרת token של התהליך |
לאפליקציית desktop או kiosk רגילה שאינה עושה impersonation אין thread token. OpenThreadToken נכשל עם ERROR_NO_TOKEN, לכן מוודאים שהקוד אינו ממשיך לקריאה כשההרשאה עדיין כבויה.
7.3 כדי להתנהג כמו תפריט החשמל, קוראים את ההגדרה האפקטיבית
EWX_HYBRID_SHUTDOWN הוא דגל ש“מבקש Fast Startup”, לא כזה ש”עוקב אחרי ההגדרה של המחשב הזה”.23
אם Fast Startup כבוי אבל קובץ ה-hibernation נשאר במחשב, בקשה עם הדגל הזה פירושה שהאפליקציה עוקפת את הגדרת המשתמש. כלי שכבוד להגדרה צריך לבדוק את ה-policy, את HiberbootEnabled המקומי, והאם קובץ ה-hibernation קיים, לפי אותם כללים כמו הסקריפט ב-5.3.
משלבים EWX_SHUTDOWN עם EWX_HYBRID_SHUTDOWN רק כשההגדרה האפקטיבית מופעלת; אחרת בוחרים full shutdown שמכבה חשמל. מאשרים את התוצאה עם Event 27 באתחול הבא.
7.4 Services חייבים לטפל ב-power events, לא רק בהודעות עצירה
ב-hybrid shutdown, אפליקציות ב-session המשתמש נסגרות, אבל services של Session 0 נכנסים ל-hibernation ומשחזרים. Services לפי משתמש נעצרים ונמחקים ב-sign-out, לכן משאירים כאן את השניים נבדלים.27
בכניסה ל-hibernation, אפליקציות ו-services מקבלים הודעה קודם, ואז drivers. הנקודה החשובה היא שב-resume, drivers ו-services אינם מתחילים מחדש; הם חוזרים למצב שהיו בו לפני hibernation.6
התיעוד של Microsoft לכלי ההערכה שלה מסביר שהודעות suspend נשלחות בסדרה ל-services שהצהירו SERVICE_ACCEPT_POWEREVENT, שחל timeout של 30 שניות לכל service, ושמנקודת המבט של service Fast Startup זהה ל-hibernation.24
אם service נכנס ל-hibernation כשהוא מחזיק חיבור להתקן וההתקן כובה בינתיים, החיבור שמשחזר בבוקר כבר אינו שמיש. אם כל הניקוי נשאר להודעת העצירה, הנתיב הזה אינו מטופל.
| נתיב | הצהרת קבלה נדרשת | איך ה-service מטופל |
|---|---|---|
| Restart או full shutdown | SERVICE_ACCEPT_SHUTDOWN / SERVICE_ACCEPT_PRESHUTDOWN |
מקבל את הודעת העצירה המתאימה ומסתיים |
| Hybrid shutdown או hibernation | SERVICE_ACCEPT_POWEREVENT |
מקבל power events ונכנס ל-hibernation ומשחזר עם מצבו |
הודעות העצירה הן SERVICE_CONTROL_SHUTDOWN / SERVICE_CONTROL_PRESHUTDOWN. הטיפול הזה נחוץ ל-restart ול-full shutdown, לכן לא מסירים אותו. משאירים אותו, ובנוסף מבצעים ניקוי וחיבור מחדש ב-power events של המעבר ל-sleep או hibernation וה-resume מהם.25
אף אחת מההודעות אינה נמסרת אלא ל-services שעשו את הצהרת הקבלה המתאימה. בלי ההצהרה, ה-service מסתיים בלי הודעה בזמן עצירה, ונכנס ל-hibernation ומשחזר בלי הודעה ב-hybrid shutdown. מה שמתחיל שוב באתחול אחרי full shutdown הם services שסוג ההפעלה שלהם הוא Automatic. Services מסוג Manual ו-Disabled לא חוזרים בלי תלות, trigger או הפעלה מפורשת. איך לקבל power events בפועל מכוסה ב-“אפליקציות שנשברות אחרי Sleep”.24
7.5 Drivers יכולים להבחין בין Fast Startup ל-resume רגיל מ-hibernation
Drivers יכולים להבחין בין השניים באמצעות SYSTEM_POWER_STATE_CONTEXT שנכלל ב-system set-power IRP.5
| נתיב | TargetSystemState |
EffectiveSystemState |
|---|---|---|
| Fast Startup | PowerSystemShutdown |
PowerSystemHibernate |
| Resume מ-hibernation רגיל | PowerSystemHibernate |
PowerSystemHibernate |
ה-NDIS driver שמסופק במערכת משתמש בהבדל הזה: הוא מכבה את יכולת ה-wake של ה-miniport ל-Fast Startup ואינו מכבה אותה ל-resume מ-hibernation רגיל. זו הסיבה, שהוסברה ב-4.4, למה WOL מטופל אחרת אף על פי ששניהם S4.5
גם ההנחיה של Microsoft היא ש-drivers שמגדירים התקן אחרת ב-cold boot וב-resume מ-hibernation צריכים להגדיר אותו כמו ב-cold boot אחרי Fast Startup.5
8. שיקוף זה בנוהלים ובניטור
אחרי שמבינים את המנגנון, מיישרים את הפעולות והניסוח שבשימוש בשטח.
| מצב תפעולי | מה לכתוב בנוהל או בהודעה |
|---|---|
| בידוד ראשוני של בעיה | “Restart”, לא “כיבוי והדלקה מחדש” |
| כשעוברים את סף ה-uptime | “נא לעשות restart”. מסבירים למה האזהרה מופיעה גם למשתמשים שמכבים כל יום |
| כשמסיימים עדכונים | הופכים “Update and restart” לתקן |
| כשמכבים כתצורה תקנית למחשבי ציוד | מכניסים את הגדרת ה-Registry מ-6.3 ל-provisioning, ובקבלה מאמתים את האתחול אחרי shutdown רגיל בשיטה של פרק 5 |
ציון “restart” במפורש חשוב גם למניעת כיבויים כפויים בלחיצה ארוכה על כפתור החשמל בשטח. ניטור מבוסס uptime אפשר להשאיר כפי שהוא. במכונת Fast Startup, הוא מזהה נכון שה-kernel לא עבר restart.
גם כש-restart גורם לבעיה להיעלם, משיגים את בדיקת השחזור ואת אימות הלוג מ-4.1 לפני שמשקפים את זה בנוהלים או בהגדרות. אם restart לא מתקן, מחפשים סיבות שאינן Fast Startup. ראו גם “Shutdown ב-Windows מנקודת המבט של האפליקציה” לקשר בין עדכונים לאפליקציות של מחשבי ציוד.3
9. סיכום
הנקודה לזכור היא ש“shutdown” עם Fast Startup מופעל הוא כיבוי מנקודת המבט של המשתמש, לא פעולה שבונה מחדש את כל מצב Windows. אפליקציות ו-session המשתמש נסגרים, אבל ה-kernel, ה-drivers ו-services של Session 0 נשמרים ומשחזרים.52
במחשב שבו Fast Startup כבוי, או בלי קובץ hibernation, גם “Shut down” רגיל סוגר את session של ה-kernel ונכנס ל-S5.
כדי לאפס פעם אחת, בוחרים Restart; כדי לסיים לגמרי ולנתק גם חשמל, בוחרים shutdown /s /t 0. לא מסיקים את הסיבה רק כי restart תיקן; מאמתים עם בדיקת שחזור, Event 27 והלוגים סביבם.19
האם לכבות Fast Startup מחליטים לפי האם המכונה מניחה אתחול והאם OS אחר משנה את אותו volume. לאחרון נחוצים גם אמצעים ל-hibernation מפורש. אם WOL היא המטרה, בוחנים מחדש את מצב ההמתנה במקום להחליף את ההגדרה.17204
מאמרים קשורים
- Shutdown ב-Windows מנקודת המבט של האפליקציה — exit notifications, restart ו-power loss
- אפליקציות שנשברות אחרי Sleep — power events ב-Windows ואיך לבנות אפליקציה עסקית ששורדת resume
- Sleep, hibernation, Modern Standby ואפליקציות ארוכות-ריצה — לתכנן סביב “זה עמד בלילה”
- מה זה Windows Efficiency mode? - אייקון העלה הירוק ואיך לכבות
- הגדרות Advanced של NIC ב-Windows: RSS, LSO, EEE ו-Wake on LAN
- Windows Update אחרי ש-WSUS הפך ל-deprecated — איך בוחרים בין WUfB, Autopatch ו-Intune
- איזה Windows לשים במחשב תעשייתי? — מדריך מעשי ל-Windows IoT Enterprise / LTSC
- איך בונים ומפעילים Windows Services — מבחירה בין Task Scheduler ל-Services ועד הפיכת BackgroundService ל-Windows Service
תחומי ייעוץ קשורים
KomuraSoft LLC מטפלת בתכנון תקני provisioning שכוללים את תפעול החשמל של מחשבי ציוד ומסופי kiosk (shutdown, sleep, hibernation ו-Wake on LAN), בחקירת שורש של בעיות אפליקציות ארוכות-ריצה כמו “רק restart מתקן” ו”זה עמד בבוקר”, וב-design review של טיפול ב-power events ב-Windows services ובאפליקציות תושבות. אפשר להתחיל מתיק בודד כמו “ה-uptime לא יורד אף שמכבים כל לילה”.
קישורים
-
Microsoft Learn, Fast startup causes hibernation or shutdown to fail in Windows 10 or Windows 8.1. על כך ש-Fast Startup מכניס את session של ה-kernel ל-hibernation במקום לסגור אותו ושומר את session של ה-kernel ואת device drivers ל-hiberfil.sys; ש-restart מבצע מחזור full boot; שהגדרת Fast Startup אינה חלה על restart-ים; שהוא מופעל כברירת מחדל וכיבוי אינו מומלץ; ש-
Shutdown /s /t 0הוא full shutdown כברירת מחדל ו-/hybridהופך אותו ל-hybrid; ושהמערכת חוזרת למסך הנעילה עם Event ID 45 כשאתחול תצורת memory dump נכשל בזמן hibernation, עםDumpFiltersכמקום לבדיקה. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 -
Microsoft Learn, Delivering a great startup and shutdown experience. על תרחיש shutdown ו-restart ברירת המחדל מאז Windows 8.x שנקרא fast startup, sign-out לכל sessions המשתמש (“session 1” במונחי המסמך) וכתיבת השאר לקובץ ה-hibernation; טעינת המצב שאותחל מקובץ ה-hibernation באתחול במקום full boot; שה-kernel, ה-drivers וה-services נשמרים ומשחזרים במקום לעבור restart ב-shutdown שיזם המשתמש, כך שה-uptime בין restart-ים של ה-kernel יכול להיות ארוך משמעותית מבעבר; שצריך לנטר memory leaks ב-drivers וב-services; שקריאה וכתיבה של קובץ ה-hibernation מסבירות כ-50% מזמן האתחול; וטבלת התנהגות APIs של shutdown (
InitiateSystemShutdownExו-InitiateSystemShutdownתמיד full shutdown,InitiateShutdownעםSHUTDOWN_HYBRIDו-ExitWindowsExעםEWX_HYBRID_SHUTDOWNל-shutdown של Fast Startup). ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 -
Microsoft Learn, Updates may not be installed with Fast Startup in Windows 10. על עדכונים שלפעמים אינם מותקנים אחרי shutdown כש-Fast Startup מופעל, מה שלא קורה עם restart; שחלק מהעדכונים מסתיימים רק באתחול שאחרי full shutdown; בחירת “Restart” מתפריט החשמל להשלמת עדכונים ממתינים; וההשהיה בסביבות Configuration Manager שטופלה ב-Configuration Manager 2002 וב-Windows 10 21H1. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Wake on LAN (WOL) behavior in Windows 10. על shutdown ברירת המחדל ב-Windows 7 שהיה S5, עם WOL מ-S5 שאינו נתמך רשמית אף על פי שחלק מהדגמים התעוררו על חשמל שיורי; ש-shutdown ברירת המחדל ב-Windows 10 הוא hybrid shutdown (S4), עם WOL מ-S4 ומ-S5 שאינו נתמך והמתאם אינו מוכן במפורש ל-wake; ש-WOL נתמך רק מ-sleep (S3) או hibernation (S4) שהמשתמש בחר במפורש; ש-Windows מכבה WOL במפורש רק במעבר ל-hybrid shutdown ולא במעבר ל-hibernation; שחלק מהדגמים שה-firmware והחומרה שלהם תומכים ב-wake מ-S4/S5, ובמקרה הזה Windows אינו מעורב; הנוהל לכיבוי בביטול סימון “Turn on fast startup (recommended)” תחת “Power Options” > “Choose what the power buttons do” ב-Control Panel; ושכיבוי אינו מומלץ. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Microsoft Learn, Distinguishing fast startup from wake-from-hibernation. על שלושת מצבי האתחול, cold, resume מ-hibernation, ו-fast (הוצג ב-Windows 8); ש-cold boot טוען את ה-kernel, מונה התקנים וטוען drivers, בעוד Fast Startup רק קורא את קובץ ה-hibernation; ההכנה ל-Fast Startup של סגירת אפליקציות, sign-out לכל sessions המשתמש, שליחת power IRP ל-drivers להכנה ל-hibernation, ושמירת תמונת הזיכרון של ה-kernel כולל kernel-mode drivers ל-hiberfil.sys לפני ניתוק החשמל; הבחנה בין השניים עם
TargetSystemStateו-EffectiveSystemStateשלSYSTEM_POWER_STATE_CONTEXT; ש-NDIS driver מכבה את יכולת ה-wake של ה-miniport ל-Fast Startup אבל לא ל-resume מ-hibernation; וש-drivers שמגדירים אחרת ל-cold boot ול-resume מ-hibernation צריכים להגדיר כמו ב-cold boot אחרי Fast Startup. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 -
Microsoft Learn, System power states. על כך ש-Fast Startup הוא סוג shutdown שעושה sign-out למשתמש לפני יצירת קובץ ה-hibernation; שהמערכת נראית למשתמש ב-S5 אבל בפועל עוברת דרך S4, עם תגובה לאזעקות wake של התקנים בהתאם; שתוכן Session 0 נכתב לדיסק; שני סוגי קובץ hibernation, full (40% כברירת מחדל) ו-reduced (20% כברירת מחדל, Fast Startup בלבד), והפלט השונה של
powercfg /aלכל אחד; להריץ/size 0קודם כש-/type reducedנכשל; ש-Fast Startup הוא ברירת המחדל כשמבקשים shutdown, בעוד בקשת restart וקריאת API shutdown מאפליקציה מביאות ל-full shutdown (S5); שאפליקציות, services ו-drivers מקבלים הודעה בכניסה ל-hibernation וש-drivers ו-services משחזרים למצב שלפני hibernation במקום להתחיל מחדש ב-resume; ועלSHUTDOWN_HYBRIDל-InitiateShutdownו-EWX_HYBRID_SHUTDOWNל-ExitWindowsEx. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 -
Microsoft Learn, Per-user services in Windows. על כך ש-services לפי משתמש נוצרים כשמשתמש נכנס ב-sign-in ונעצרים ונמחקים כשהמשתמש יוצא ב-sign-out. ↩ ↩2
-
Microsoft Learn, Optimizing Performance and Responsiveness. על Fast Startup, שהוצג ב-Windows 8, כהתנהגות האתחול ברירת המחדל, עם תהליך ה-shutdown שעודכן לכתוב נתונים לדיסק כמו hibernation; אתחול שעובר את שלבי אתחול BIOS, קריאת קובץ ה-hibernation, resume של התקנים, resume של Winlogon, אתחול Explorer, ו-Post On/Off; ושקובץ ה-hibernation מכיל את כל הקשר המערכתי שנכתב ב-shutdown. ↩
-
Microsoft Learn, shutdown. על כך ש-
/sמכבה את המחשב; ש-/hybridהוא האפשרות שמכבה את המכשיר ומכינה אותו ל-Fast Startup, בשימוש בשילוב עם/s; ש-/gעושה full shutdown ואז restart, וממשיך אפליקציות רשומות אם Automatic Restart Sign-On מופעל; ושברירת המחדל של/tהיא 30 שניות, עם 0 מותר. ↩ ↩2 ↩3 -
Microsoft Q&A, why is Task Host preventing shutdown?. על תשובת התמיכה שמסבירה שבחירת “Shut down” תוך החזקת מקש Shift בשולחן העבודה או במסך הכניסה מכבה זמנית Fast Startup לפעם הזו ומבצעת full shutdown (תשובת תמיכה קהילתית, לא מקור רשמי). ↩
-
Microsoft Learn, InitiateSystemShutdownExA function (winreg.h). על כך שהמערכת עושה restart מיד אחרי shutdown כש-
bRebootAfterShutdownהוא TRUE, ושוטפת caches לדיסק ומכבה בבטחה כשהוא FALSE; ועל כך שכיבוי ה-PC המקומי דורש את הרשאתSE_SHUTDOWN_NAMEעל ה-thread הקורא, שמשתמש מחובר יכול להפעיל כברירת מחדל. ↩ ↩2 ↩3 -
Microsoft Learn, WMI Tasks: Desktop Management. על קבלת uptime של מחשב על ידי חיסור המאפיין
LastBootUpTimeשל המחלקהWin32_OperatingSystemמהזמן הנוכחי. ↩ -
Microsoft Learn, Get-Uptime. על כך שה-cmdlet הוצג ב-PowerShell 6.0 ומחשב את הזמן מאז אתחול ה-OS האחרון מטיימר ברזולוציה גבוהה (מונה ticks מאז תחילת המערכת), כך שהערך יכול להיבדל מעט מזה שנגזר מ-
LastBootUpTimeשלWin32_OperatingSystemב-WMI. ↩ -
Microsoft Learn, Ethernet. על כך שהתנהגות shutdown ברירת המחדל היא hybrid shutdown (S4); שה-NIC אינו מוכן ל-wake ו-remote wake אינו נתמך גם ב-hybrid shutdown (S4) וגם ב-full shutdown (S5); וש-WOL נתמך רק מ-sleep (S3) או hibernation (S4). ↩
-
Microsoft Learn, Modern Standby Wake Sources. על מחשבי Modern Standby שנשארים מחוברים לרשת (Wi-Fi, mobile broadband, Ethernet) בהספק נמוך גם כשהמסך כבוי; ש-Wi-Fi, Ethernet והתקני MBB מספקים קישוריות רציפה ומשמשים כמקורות wake; ש-Remote Desktop ושיתוף קבצים יכולים להעיר את ה-SoC דרך חיבור Ethernet; ושמקורות wake רבים כבויים ב-Windows 11 גרסה 24H2 ואילך כשמזוהה ניקוז סוללה מוגזם. ↩ ↩2
-
Microsoft Learn, Wake On LAN for Surface devices. על Wake on LAN שעובד כברירת מחדל במכשירי Surface בזמן Modern Standby מאז Windows 10 גרסה 1607, ועל wake מ-hibernation (S4) או shutdown (S5) שדורש תמיכה בצד ה-dock כמו Surface Dock 2. ↩
-
Microsoft Learn, Hibernate Once/Resume Many (HORM). על כך שערך ה-Registry שמכבה Fast Startup הוא
HiberbootEnabled(DWORD, 0 לכבוי, 1 למופעל) תחתHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power, ועל כך ש-powercfg /h off, שמכבה hibernation, מוחק את hiberfil.sys. ↩ ↩2 ↩3 -
Microsoft Learn, Policy CSP - ADMX_WinInit. על כך שה-policy “Require use of fast startup” (Hiberboot, WinInit.admx, Computer Configuration > System > Shutdown) שולט בשימוש ב-Fast Startup, שהמערכת דורשת ש-hibernation יהיה מופעל כשהוא Enabled, ושההגדרה המקומית בשימוש כשהוא Disabled או Not Configured; שמפתח ה-Registry הוא
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. על כך ש-Event ID 1074 רושם את התהליך, המשתמש, הסיבה וסוג ה-shutdown שביקש אותו, ועל כך ש-41 ו-6008 מצביעים על עצירה בלתי צפויה. ↩
-
Microsoft Learn, How to disable and re-enable hibernation on a computer that is running Windows. על נהלי
powercfg.exe /hibernate offו-on; ש-hybrid sleep כבר לא עובד כש-hibernation כבוי; ועל כך ש-hiberfil.sys הוא קובץ מערכת מוסתר בשורש הכונן שבו מותקן ה-OS, בערך באותו גודל כמו ה-RAM, שבליו המחשב אינו יכול להיכנס ל-hibernation. ↩ ↩2 -
Microsoft Learn, Powercfg command-line options. על
/hibernateon/off;/sizeשמציין את גודל קובץ ה-hibernation כאחוז מהזיכרון;/type reduced | fullשמציין את סוג קובץ ה-hibernation, עם קובץ hibernation מוקטן שתומך רק ב-hiberboot; ועל כך ש-HiberFileSizePercentשל 40 או יותר מטופל כקובץ hibernation מלא, כך שצריך להריץ/size 0קודם כדי לעבור ל-reduced. ↩ -
Microsoft Learn, InitiateShutdownA function (winreg.h). על כך שב-Windows 8 ואילך מציינים
SHUTDOWN_HYBRIDבשילוב עם דגל אחד או יותר מאותה טבלה (השילוב עםSHUTDOWN_POWEROFFהוא הכיבוי ל-Fast Startup,SHUTDOWN_RESTARTהוא restart, ו-SHUTDOWN_NOREBOOTרק עוצר בלי לכבות), וש-shutdown תמיד full system shutdown בליSHUTDOWN_HYBRID. ↩ ↩2 -
Microsoft Learn, ExitWindowsEx function (winuser.h). על כך ש-
EWX_HYBRID_SHUTDOWNהוא דגל, זמין ב-Windows 8 ואילך, שמשולב עםEWX_SHUTDOWNלבקשת shutdown מוכן ל-Fast Startup; ש-InitiateSystemShutdown/InitiateSystemShutdownExהם הפונקציות לשימוש כשזה אינו המשתמש האינטראקטיבי; ש-shutdown או restart דורשים שהתהליך הקורא הפעיל את הרשאתSE_SHUTDOWN_NAMEעםAdjustTokenPrivileges; וש-EWX_SHUTDOWNרק עוצר את המערכת עד נקודה שבה אפשר לכבות חשמל בבטחה, כש-EWX_POWEROFFהוא מה שמכבה את החשמל. ↩ ↩2 ↩3 ↩4 -
Microsoft Learn, Suspend Services Duration. על כך שכל ה-services הרשומים לקבל אירועי ניהול חשמל (
SERVICE_ACCEPT_POWEREVENT) מקבלים את הודעת ה-suspend; שההודעות נשלחות בסדרה עם timeout של 30 שניות לכל service; וש-Fast Startup זהה ל-hibernation מנקודת המבט של service. ↩ ↩2 -
Microsoft Learn, SERVICE_STATUS structure (winsvc.h). על כך שרק services שמגדירים
SERVICE_ACCEPT_SHUTDOWN/SERVICE_ACCEPT_PRESHUTDOWN/SERVICE_ACCEPT_POWEREVENTב-dwControlsAcceptedמקבלים את ההודעותSERVICE_CONTROL_SHUTDOWN/SERVICE_CONTROL_PRESHUTDOWN/SERVICE_CONTROL_POWEREVENTבהתאמה. ↩
מאמרים קשורים
מאמרים עדכניים עם אותן תגיות, להעמקה בנושאים קרובים.
סדר name resolution ב-Windows — hosts, DNS cache, LLMNR/mDNS ו-DoH
האם hosts, ה-DNS cache, שרת DNS או LLMNR/mDNS ענו קובע למה חלק מהמחשבים נכשלים. לומדים את סדר name resolution ב-Windows, מה DoH משנה, ואי...
WMI/CIM מ-C# ומ-PowerShell — מדריך מעשי למידע חומרה, ניטור process ושאילתות remote
WMI/CIM הוא הדרך הסטנדרטית לשלוף serial number של מחשב, לנטר דיסק פנוי ולזהות process שהתחיל. המאמר מכסה CIM cmdlets כמו Get-CimInstance,...
Time Travel Debugging — להקליט ולהריץ אחורה באגים שלא משתחררים באפליקציות ארוכות-ריצה
באג פעם בחודש משאיר ב-crash dump רק את התוצאה. מקליטים ומריצים אחורה את הביצוע עם WinDbg Time Travel Debugging (TTD): TTD.exe, ring buffe...
למה arguments נשברים — כללי command-line arguments ב-Windows
Windows מעביר ל-CreateProcess מחרוזת אחת שהמקבל מפצל. מכסה את כללי CommandLineToArgvW, CRT ו-.NET, ArgumentList, ובניה ב-C++.
סיום התמיכה ב-printer drivers של Windows — איך אפליקציות עסקיות מתכוננות להדפסת דוחות ותוויות
Microsoft מפסיקה בהדרגה printer drivers מסוג v3/v4. מה Windows protected print mode מסיר, ואיך עושים inventory ומכינים הדפסת דוחות ותוויו...
נושאים קשורים
העמודים האלה ממקמים את הנושא בהקשר רחב יותר של שירותים והחלטות.
נושאים טכניים ב-Windows
שער לנושאי פיתוח Windows, חקירת תקלות וניצול נכסים קיימים.
שירותים הקשורים לנושא הזה
המאמר קשור ישירות לשירותים הבאים.
פיתוח יישומי Windows
יישומים עסקיים, חיבור התקנים וכלי תקשורת, מהגדרת הדרישות ועד הפיתוח.
שאלות נפוצות
שאלות נפוצות בפניות בנושא המאמר.
- בעיה ש-"shutdown" לא תיקן נעלמה אחרי "restart". למה?
- בגרסאות client של Windows 8 ואילך, "shutdown" בתצורה שבה Fast Startup מופעל (ברירת המחדל ברוב המחשבים שתומכים ב-hibernation) הוא hybrid shutdown. המשתמש יוצא ב-sign-out, אבל מצב ה-kernel, ה-drivers וה-services נשמר לקובץ ה-hibernation (hiberfil.sys) ומשחזר כפי שהוא באתחול הבא. כלומר, ליבת ה-OS לא אופסה. "Restart", לעומת זאת, תמיד מבצע מחזור full boot בלי קשר להגדרת Fast Startup, ולכן מצב רע ב-drivers וב-services מתאפס. עם זאת, זה ש-restart תיקן אינו מאשר לבדו את הסיבה. בעיה לסירוגין פשוט אולי לא שוחזרה, או שה-restart תיקן כי השלים עדכון שהמתין. מאשרים כמה פעמים ש"זה משתחזר אחרי shutdown ולא משתחזר אחרי restart", מאמתים עם Kernel-Boot Event 27 בלוג System שמראה שהאתחול האחרון היה 0x1 (Fast Startup) ועם רישומים בצד ה-driver, ורק אז מתייחסים למצב שנשמר כסיבה. בבידוד בעיה משתמשים ב-"restart", לא ב-"כיבוי והדלקה מחדש".
- ה-uptime ב-Task Manager לא התאפס כבר ימים. משהו שבור?
- מונה ה-uptime עצמו עובד נכון. אם "מכבים" כל לילה וה-uptime ממשיך לגדול, זו כנראה ההתנהגות המוגדרת של Fast Startup (hybrid shutdown), אבל shutdown שנכשל ולא הסתיים נראה אותו דבר, לכן לא מסיקים "שום דבר לא שבור" עד שבדקתם Event 27 ואת רשומות הלוג סביבו שמתוארות בהמשך. Uptime הוא הזמן שחלף מאז שה-kernel עלה, וב-hybrid shutdown ה-kernel רק נכנס ל-hibernation ומשחזר, כך שהמונה ממשיך לרוץ. גם התיעוד של Microsoft מציין במפורש שב-shutdown שיזם המשתמש ה-kernel, ה-drivers וה-services נשמרים ומשחזרים במקום לעבור restart, כך שה-uptime בין restart-ים של ה-kernel יכול להיות ארוך משמעותית מגרסאות Windows קודמות. Uptime נשמר גם ב-resume מ-sleep או hibernation וגם ב-shutdown שלא הסתיים, לכן כדי להיות בטוחים מאשרים עם Kernel-Boot Event 27 בלוג System שסוג האתחול האחרון היה 0x1 (Fast Startup). כדי לאפס את ה-uptime בוחרים "Restart" או מבצעים full shutdown עם shutdown /s /t 0.
- כדאי לכבות Fast Startup?
- לא באופן גורף. Microsoft אינה ממליצה לכבות Fast Startup, ובמחשב נייד רגיל האתחול המהיר שווה יותר מהחסרונות. כדאי לכבות במכונות שמופעלות בהנחה ש"כיבוי מאתחל הכול", כמו מחשבי ציוד ומכונות בדיקה, בסביבות dual-boot שחולקות את אותו דיסק עם OS אחר, ובמכונות בדיקה שעולות מ-OS אחר ומשנות את ה-volume (במקרה הזה, כיבוי Fast Startup לבדו משאיר hibernation מפורש זמין, ולכן גם מכבים hibernation עם powercfg /h off, או דורשים full shutdown לפני החלפת OS בנוהל). אם המטרה היא לפנות מקום בדיסק, כיבוי Fast Startup אינו מוחק את קובץ ה-hibernation (hiberfil.sys), ולכן לא ישיג את זה. כדי לכווץ את קובץ ה-hibernation תוך שמירה על Fast Startup משתמשים ב-powercfg /h /type reduced; אם אין צורך ב-hibernation בכלל, משתמשים ב-powercfg /h off. אם פשוט "רוצים לאפס פעם אחת", restart או shutdown /s /t 0 עושים את העבודה בלי לשנות הגדרה.
- אי אפשר להעיר מחשב כבוי עם Wake on LAN.
- ב-Windows 10/11, Wake on LAN אינו נתמך לא מ-shutdown ברירת המחדל (hybrid shutdown) ולא מ-full shutdown (S5). כי מצב שבו המשתמש הורה על shutdown אמור לצרוך אפס חשמל, Windows אינו מכין (arm) את מתאם הרשת ל-wake. Wake on LAN זמין מ-sleep (S3) או כשהמשתמש בחר במפורש hibernation (S4). Hybrid shutdown הוא גם S4 במציאות, אבל Windows מכבה במפורש Wake on LAN רק במעבר ל-hybrid shutdown. למכונה שרוצים להעיר בלילה לעדכונים, מפעילים אותה ב-"Sleep" או "Hibernate" במקום "Shut down", או בודקים את יכולות ה-wake של ה-firmware. במכונות Modern Standby (S0 low-power idle), שאין להן S3, הרשת יכולה להיות מקור wake גם בזמן sleep, אבל האם באמת אפשר להעיר תלוי ב-NIC, ב-firmware, בתנאי החשמל ובמימוש של ה-OEM, לכן מאמתים במכונה אמיתית לפני שבונים את זה לתפעול.
- בחרתי "Update and shut down" ב-Windows Update, אבל העדכון עדיין לא הסתיים באתחול הבא.
- תיעוד התמיכה של Microsoft מציין במפורש שחלק מהעדכונים יכולים להסתיים רק באתחול שאחרי full shutdown, ועשויים לא להסתיים כשהאתחול עובר דרך Fast Startup (hibernation). כשרוצים שהעדכון ייגמר בוודאות, בוחרים "Update and restart". בסביבות שמנוהלות ב-Configuration Manager, ההשהיה הזו שופרה ב-Configuration Manager 2002 וב-Windows 10 21H1.
- האפליקציה העסקית הפנימית שלנו קוראת ל-shutdown. איזה API נותן full shutdown?
- InitiateSystemShutdownEx ו-InitiateSystemShutdown אף פעם לא הופכים ל-hybrid: עם bRebootAfterShutdown = FALSE הם מכבים חשמל (full shutdown), ועם TRUE הם עושים restart. InitiateShutdown מבצע shutdown ל-Fast Startup רק כשדגל SHUTDOWN_HYBRID משולב עם SHUTDOWN_POWEROFF (בשילוב עם SHUTDOWN_RESTART זה restart, ו-SHUTDOWN_NOREBOOT רק עוצר את המערכת בלי לכבות חשמל), ו-ExitWindowsEx רק כש-EWX_HYBRID_SHUTDOWN משולב עם EWX_SHUTDOWN (EWX_HYBRID_SHUTDOWN אינו מצוין לבדו). אם האפליקציה מממשת כפתור "כיבוי" של מחשב ציוד, קוראים ל-InitiateSystemShutdownEx עם bRebootAfterShutdown = FALSE, או ל-ExitWindowsEx עם EWX_POWEROFF בלבד (בלי EWX_HYBRID_SHUTDOWN; EWX_SHUTDOWN רק עוצר את המערכת עד נקודה שבה אפשר לכבות חשמל בבטחה ואינו מכבה), ומקבלים full shutdown בלי קשר להגדרה (שניהם מניחים שההרשאה SE_SHUTDOWN_NAME הופעלה עם AdjustTokenPrivileges: ExitWindowsEx על process token, InitiateSystemShutdownEx על ה-token האפקטיבי של ה-thread הקורא; אם היא נשארת כבויה הקריאה נכשלת). משורת הפקודה, shutdown /s /t 0 הוא full shutdown כברירת מחדל והופך ל-hybrid רק כשמוסיפים /hybrid.