Control Sets
The Windows Boot Loader reads control set information from the registry key HKEY_LOCAL_MACHINE\SYSTEM, which is stored in the file %SystemRoot%\System32 \Config\System, so that the kernel can determine which device drivers need to be loaded during startup. Typically, several control sets exist, with the actual number depending on how often system configuration settings change.
The HKEY_LOCAL_MACHINE\SYSTEM subkeys used during startup are:
- \CurrentControlSet, a pointer to a ControlSetxxx subkey (where xxx represents a control set number, such as 001) designated in the \Select\Current value.
- \Select, which contains the following entries:
- Default Points to the control set number (for example, 001=ControlSet001) that the system has specified for use at the next startup. If no error or manual invocation of the LastKnownGood startup option occurs, this control set number is designated as the value of the Default, Current, and LastKnownGood entries (assuming that a user is able to log on successfully).
- Current Points to the last control set that was used to start the system.
- Failed Points to a control set that did not start Windows Vista successfully. This value is updated when the LastKnownGood option is used to start the system.
- LastKnownGood Points to the control set that was used during the last user session. When a user logs on, the LastKnownGood control set is updated with configuration information from the previous user session.
The Windows Boot Loader uses the control set identified by the \Select\Default value unless you choose the Last Known Good Configuration from the Advanced Boot Options menu.
The kernel creates the registry key HKEY_LOCAL_MACHINE\HARDWARE, which contains the hardware data collected at system startup. Windows supports an extensive set of devices, with additional drivers not on the Windows operating system DVD provided by hardware manufacturers. Drivers are kernel-mode features required by devices to function within an operating system. Services are features that support operating system and application functions and act as network servers. Services can run in a different context than user applications and typically do not offer many user-configurable options.
For example, the Print Spooler service does not require a user to be logged on to run and functions independently of the user who is logged on to the system. Drivers generally communicate directly with hardware devices, whereas services usually communicate with hardware through drivers. Driver and service files are typically stored in the %SystemRoot% \System32 and %SystemRoot%\System32\Drivers folders and use .exe, .sys, or .dll file name extensions.
Drivers are also services. Therefore, during kernel initialization, the Windows Boot Loader and Ntoskrnl use the information stored in the HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Services\Servicename registry subkeys to determine both the drivers and services to load. In the Servicename subkeys, the Start entry specifies when to start the service. For example, the Windows Boot Loader loads all drivers for which Start is 0, such as device drivers for hard disk controllers. After execution is transferred to the kernel, the kernel loads drivers and services for which Start is 1.
In this tutorial:
- Configuring Startup and Troubleshooting Startup Issues
- What is New with Windows Startup
- Boot Configuration Data
- BCD Stores
- System Recovery
- Windows Boot Performance Diagnostics
- Understanding the Startup Process
- Power-on Self Test Phase
- Initial Startup Phase
- Initial Startup Phase for BIOS Computers
- Initial Startup Phase for EFI Computers
- Windows Boot Manager Phase
- Windows Boot Loader Phase
- Kernel Loading Phase
- Control Sets
- Values for the Start Registry Entry
- Value Descriptions for Type Entries
- Other Registry Entries in the Servicename Subkeys
- Session Manager
- Logon Phase
- Important Startup Files
- How to Configure Startup Settings
- How to Use the Startup And Recovery Dialog Box
- How to Use the System Configuration Tool
- How to Use BCDEdit
- How to Interpret BCDEdit Output
- How to Back Up and Restore Settings
- How to Change the Default Operating System Entry
- How to Change the Boot Menu Time-Out
- How to Change the Order of Boot Manager Menu Items
- How to Create an Entry for Another Operating System
- How to Remove a Boot Entry
- How to View and Update Global Debugger Settings
- How to Remove the Windows 7 Boot Loader
- How to Configure a User Account to Automatically Log On
- How to Disable the Windows Startup Sound
- How to Speed Up the Startup Process
- The Process of Troubleshooting Startup
- Startup Troubleshooting Before the Starting Windows Logo Appears
- How to Start the System Recovery Tools
- How to Run Startup Repair
- How to Use BootRec.exe
- How to Diagnose Hardware Problems
- How to Use System Restore
- How to Manually Repair the Boot Sector
- How to Manually Update the BCD Registry File
- How to Manually Replace Files
- How to Reinstall Windows
- Startup Troubleshooting After the Starting Windows Logo Appears
- How to Restore the Last Known Good Configuration
- How to Enable Boot Logging
- How to Start in Safe Mode
- How to Identify Failing Drivers and Services
- How to Analyze Startup Problems in Safe Mode
- Event Viewer (Eventvwr.msc)
- System Information
- Error Reporting Service
- How to Use Device Manager to View or Change Resources
- How to Analyze Boot Logs
- How to Roll Back Drivers
- How to Temporarily Disable a Service
- Troubleshooting Startup Problems After Logon
- How to Temporarily Disable Startup Applications and Processes
- How to Disable Startup Applications Using the Shift Key
- How to Disable Startup Programs Using the System Configuration Utility
- How to Disable Startup Applications Configured Using Group Policy or Logon Scripts
- How to Permanently Disable Startup Applications and Processes
- Manually Remove the Entry