375
votes

When installing Windows services there are two options for automatically starting a Windows service on Windows startup. One is Automatic, and the other is Automatic (Delayed start). What is the difference between these two in detail?

For example, if you're creating the installer with wixtoolset, the ServiceConfig element has the DelayedAutoStart attribute. How will that effect what happens when services are started at boot time?

WiX documentation: ServiceConfig Element

1
I'm not sure how this is considered off topic considering the fact that wixtoolset.org gives you the ability to specify this and we allow questions about Wix.Aelphaeis
I got here looking for an answer for wix installer. This is absolutely on topic for programming as an installer is kinda relevant to programming.Still.Tony
Agreed with Smithers and PitLock. If you look at the vote-ups for both the question and the answers on this and other "closed" subjects, it seems that some members are more interested in the letter of the law rather than the usefulness of the post, which is the whole idea behind sites like this. Apparently, they don't realize that this particular question does, in fact, affect "programming". At least they didn't take the post down.Jeff Moden
I don't agree that this is off topic. This is very relevant to developers.mghaoui

1 Answers

516
votes

In short, services set to Automatic will start during the boot process, while services set to start as Delayed will start shortly after boot.

Starting your service Delayed improves the boot performance of your server and has security benefits which are outlined in the article Adriano linked to in the comments.

Update: "shortly after boot" is actually 2 minutes after the last "automatic" service has started, by default. This can be configured by a registry key, according to Windows Internals and other sources (3,4).

The registry keys of interest (At least in some versions of windows) are:

  • HKLM\SYSTEM\CurrentControlSet\services\<service name>\DelayedAutostart will have the value 1 if delayed, 0 if not.
  • HKLM\SYSTEM\CurrentControlSet\services\AutoStartDelay or HKLM\SYSTEM\CurrentControlSet\Control\AutoStartDelay (on Windows 10): decimal number of seconds to wait, may need to create this one. Applies globally to all Delayed services.