The Services console (services.msc
) in Windows lets you configure the startup type of Windows Services. As you know, you can choose one of the options from the dropdown: Automatic (Delayed Start), Automatic, Manual, or Disabled.
But, do you know what’s the difference between Automatic and Automatic (Delayed Start).
Automatic vs Automatic (Delayed start) Startup types
If a service startup is set to Automatic, it loads during boot. As there are too many built-in Windows services, Microsoft first introduced the “delayed start” concept in Windows Vista to improve the Windows boot and login performance. Automatic (delayed start) services won’t start until after all other auto-start services.
The service control manager, after processing the auto-start (“Automatic”) services, it then proceeds to launch services that are set to run as Automatic (delayed start) by invoking the ScInitDelayStart()
function.
After all the automatic start services are loaded, the system queues the “delay start” services for 2 minutes (120 seconds) by default. This interval can be altered by creating a registry DWORD (32-bit) value named AutoStartDelay
and setting the delay (base: decimal) in seconds, in the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Other than this, the Service Control Manager loads the “delay start” services in the same way as it starts the non-delayed auto-start services. There are no other differences between Automatic (delayed start) and Automatic startup types.
Quoting Microsoft Performance Team blog: Startup Processes and Delayed Automatic Start
Delayed Automatic Start for System Services. To address the problem of the growing number of services set to start automatically and the subsequent negative impact on boot performance, there is a new start type for services that do not need to start early in the boot process – the Delayed start. This allows a service to still start automatically, but with the added advantage that boot performance is improved. Services set to start as Delayed will start shortly after boot.
So how does this work? The Service Control Manager starts services that are configured for the delayed automatic start after all of the automatic-start threads have finished starting. The Service Control manager also sets the priority of the initial thread for these delayed services to THREAD_PRIORITY_LOWEST. This causes all of the disk I/O performed by the thread to be a very low priority. Once a service finishes initializing, the priority is set back to normal by the Service Control Manager. The combination of the delayed start, low CPU and memory priority, as well as the background disk priority greatly reduce the interference with the user’s logon.
Many Windows services, including the Background Intelligent Transfer Service (BITS), Windows Update Client, and Windows Media Center, use this new start type to help improve logon performance after a system boot. To configure a service for delayed automatic-start, you can create a REG_DWORD value called DelayedAutoStart
in the service’s configuration registry key under HKLM\SYSTEM\CurrentControlSet\Services
Registry values for Automatic and Automatic (delayed start) Startup types
For example, the Delivery Optimization service (DoSvc
) is set to Automatic (delayed start) in Windows 10 v1903. Here are the registry values for this service which store the service startup type choice:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DoSvc Value name: DelayedAutostart Value type: REG_DWORD Value data: 1
The DelayedAutostart
value data of 1
means the service is set to delayed start. If the value is missing or is set to 0
, then it’s not set to delayed start.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DoSvc Value name: Start Value type: REG_DWORD Value data: 2
For the Start
DWORD value, the possible data are:
2
is Automatic3
is Manual4
is Disabled
- If the
Start
DWORD is set to anything other than2
(Automatic), then theDelayedAutoStart
value is ignored, even if it’s set to1
. - If the
Start
DWORD is set to2
(Automatic) andDelayedAutoStart
is set to0
or the value is missing, then it means the service is set to Automatic start (no delay.)
Editor’s note: Arbitrarily changing the service startup types can cause problems to the system. It’s advisable to leave the services configuration in the Windows default setting in most cases. If you plan to modify the services configuration, backup the current service startup configuration, create a Restore Point, or perform a complete registry backup beforehand.
One small request: If you liked this post, please share this?
One "tiny" share from you would seriously help a lot with the growth of this blog. Some great suggestions:- Pin it!
- Share it to your favorite blog + Facebook, Reddit
- Tweet it!
Well done!
In Services I cannot get Automatic start for Windows Time (Clock) to work. It is stuck on Manual and clicking Automatic does not change it.
@Christopher: W32Time is a Manual (Trigger Start) service. You can force start it in non-domain environment by deleting the trigger. Refer: W32Time doesn’t start on a workgroup computer – Windows Client | Microsoft Docs
Great job! One question though, what happens if my service is set to “Automatic” but fails to start every single time? (Subsequent failures set to: “Restart the Service”, Reset fail count after: 1 minute). Since all Automatic (Delayed start) services wait until my service is up and running, will they ever start?
Regards,
Sorry: Reset fail count after: 1 days.