Having too many startup programs not only makes your system take a longer time to start, it also has the potential to waste memory. If you don’t require a program at startup, it’s a good idea to get it out of your startup path.
Unfortunately, tracking down programs that start automatically isn’t as easy as you might think. A program can be configured to run at startup in many ways, not just by having a shortcut in a Startup folder. To wit:
Run key (machine)
Programs listed in the registry’s HKLM\Software\Microsoft\Windows\CurrentVersion\Run key are available at startup to all users.
Run key (user)
Programs listed in the HKCU\Software\Microsoft\Windows\CurrentVersion\Run key run when the current user logs on. A similar subkey, HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run, can also be used.
Programs listed in the Load value of the registry key HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows run when any user logs on.
The Windows task scheduler (see “Using the Windows 7 Task Scheduler” on page 779) can specify tasks that run at startup. In addition, an administrator can set up tasks for your computer to run at startup that are not available for you to change or delete.
Programs written for 16-bit Windows versions can add commands to the Load= and Run= lines in the [Windows] section of this startup file, which is located in %SystemRoot%. The Win.ini file is a legacy of the Windows 3.1 era.
RunOnce and RunOnceEx keys
This group of registry keys identifies programs that run only once, at startup. These keys can be assigned to a specific user account or to the machine:
RunServices and RunServicesOnce keys
As the names suggest, these rarely used keys can control automatic startup of services. They can be assigned to a specific user account or to a computer.
The Winlogon key controls actions that occur when you log on to a computer running Windows 7. Most of these actions are under the control of the operating system, but you can also add custom actions here. The “HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit” and “HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell” subkeys can automatically launch programs.
The Group Policy console includes two policies (one in Computer Configuration\Administrative Templates\System\Logon, and one in the comparable User Configuration folder) called Run These Programs At User Logon that specify a list of programs to be run whenever any user logs on.
Using policy settings to specify startup programs, as described in the previous paragraph, creates corresponding values in either of two registry keys: HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run or HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run.
By default, the multistring BootExecute value of the registry key HKLM\System\CurrentControlSet\Control\Session Manager is set to autocheck autochk *. This value causes Windows, at startup, to check the file-system integrity of your hard disks if your system has been shut down abnormally. It is possible for other programs or processes to add themselves to this registry value. (Note: Microsoft warns against deleting the default BootExecute value.
Shell service objects
Windows loads a number of helper dynamic-link libraries (DLLs) to add capabilities to the Windows shell.
Logon scripts, which run automatically at startup, can open other programs. Logon scripts are specified in Group Policy in Computer Configuration\Windows Settings\Scripts (Startup/Shutdown) and User Configuration\Windows Settings\Scripts (Logon/Logoff).
In Windows Vista, Windows Defender offered a list of your startup programs as part of its Software Explorer. That feature of Windows Defender has been removed. However, the System Configuration utility, still included with Windows 7, can help you see what’s running at startup and disable particular startup items if you choose.
To run System Configuration, type msconfig in the Start menu’s search box, and then press Enter. Click the Startup tab to see what your system is busy doing at startup, and clear the check boxes for any items you want to disable. After you disable one or more items, those items will appear at the bottom of the list (in the default sort order) the next time you run System Configuration, and the date and time of their disabling will appear in the column at the right.
System Configuration is handy for temporarily lightening your system’s startup overhead, and for those who don’t relish registry edits, it’s a fine way to disable startup behavior established by registry keys. Note, however, that the utility’s startup list does not include items established via Group Policy or the Windows 7 Task Scheduler.
For an alternative, less cramped, and more readable listing of your system’s startup programs, open the Start menu, choose All Programs, Accessories, and then System Tools, and run System Information. In the left pane of the System Information window, open Software Environment, and then click Startup Programs. Because the System Information window can be maximized, it’s handier for reading long registry paths than the fixed-size System Configuration window. Like System Configuration, however, it omits policy and scheduled startup tasks.