How to tell when Windows and all startup programs have completed booting?

Solution 1:

There are several potentially helpful answers here, but I think there are two important points that haven't been made:

  1. No, it is not possible to programmatically determine that Windows and all startup programs have finished booting. This is essentially the Halting Problem and no program out there will be able to answer the question "For this arbitrary program, at what point should we say it has been loaded?".

  2. What is the actual problem you are trying to solve? All of the answers here attempt to find a solution to your question, but the question itself feels like it might be missing some important information. We want to solve your problem, not just answer the question.

Reading your question again and going just by what you've said, my response would be one of:

  • Just don't worry about it and start using your computer. Foreground tasks are prioritized and unless you've got something really unusual going on it shouldn't matter if background tasks are running.

Or:

  • Manually watch the system a few times and figure out the maximum amount of time it takes before the system is "ready" according to whatever metrics you have. Get a small timer program or script and add it to your system's startup. It can display a message or play a sound when the time you've chosen has elapsed.

This might not directly answer your current question, but hopefully it is helpful.

Solution 2:

Why not using Windows Task Scheduler and the Event ID 100 to play a custom sound when Windows is really finished?

Under Triggers select "On an event" and

  • Log: LogMicrosoft-Windows-Diagnostics-Performance/Operational
  • Source: Diagnostic-Performance
  • Event ID: 100

Under Actions select "Start a program" with

  • Program/script: "%ProgramFiles(x86)%\Windows Media Player\wmplayer.exe"
  • Add arguments: "%windir%\Media\Windows Logon Sound.wav"

    Event ID: 100   
    Decription: Windows has started up
    

    Source Event ID 100: Windows Diagnostics-Performance

Solution 3:

Windows will treat boot finished if it was 80% idle (excluding low-priority CPU and disk activity) for 10s after reaching the Desktop UI.

To see the exact boot time use xbootmgr to trace why Windows boot slowly.