Home > Sample chapters > Windows

Adding, Removing, and Managing Programs in Windows 7

Managing Startup Programs

Setting up a program to run automatically when you start Windows is easy. If the program’s installer doesn’t offer to do this for you (many do) and you want the program to run every time you begin a Windows session, create a shortcut for the program in the Startup folder of your Start menu. Here’s one good way to do it:

  1. Open the Start menu, choose All Programs, right-click Startup, and then choose either Open (to create a shortcut for your user account only) or Open All Users (to create a shortcut for all accounts at your computer). This will open the appropriate Startup folder in Windows Explorer.

  2. On the Start menu, find the item that you want to launch automatically when you start Windows.

  3. Drag the item to the Startup folder.

Controlling Startup Programs with the System Configuration Utility

The problem that many users have with startup programs is not with creating them (that’s easy, and in many cases it happens more or less automatically), but getting rid of them. 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.

  • Load value Programs listed in the Load value of the registry key HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows run when any user logs on.

  • Scheduled tasks The Windows Task Scheduler (see “Using Task Scheduler” on page 966) 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.

  • Win.ini 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:

    • HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce

    • HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx

    • HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce

    • HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnceEx

  • 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.

  • Winlogon key 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.

  • Group Policy 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.

  • Policies\Explorer\Run keys 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.

  • BootExecute value 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. For information about what to do if your system hangs while Autocheck is running, see Microsoft Knowledge Base article 151376, “How to Disable Autochk If It Stops Responding During Reboot,” at w7io.com/0503.)

  • Shell service objects Windows loads a number of helper dynamic-link libraries (DLLs) to add capabilities to the Windows shell.

  • Logon scripts 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, the antispyware utility included with the operating system, 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. Figure 5-8 shows the Startup tab of the System Configuration utility.

Figure 5-8

Figure 5-8 To disable a startup item in System Configuration, clear its check box.

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 dandy 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, nor in many of the other dark recesses in which startup programs can hide.

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 is the fixed-size System Configuration window. Like System Configuration, however, it omits policy and scheduled startup tasks.

Using Autoruns

For the most comprehensive listing of items that run at startup, as well as a handy tool to prevent certain programs from starting, we recommend Autoruns, a free utility from Windows Sysinternals. Autoruns, which you can download from w7io.com/2001, shows all the registry keys and startup locations listed earlier, and it also shows Explorer shell extensions, services, desktop gadgets, browser helper objects, and more. Autoruns is particularly useful for finding processes that don’t belong (such as a Trojan horse or other malware) or that you suspect of causing problems. You can then disable these items without removing them while you test your theory, or you can delete their auto-start command altogether.

Select an item, and its details appear at the bottom of the screen, as shown here. Disable an item by clearing the check box next to its name; you can later reenable it by selecting the check box. To clear an item from the auto-start list, select it and choose Entry, Delete. (Note that deleting removes only the entry in the registry or other location that causes the item to run; it does not delete the program.)

httpatomoreillycomsourcemspimages1389900.jpg

Although the tabs at the top of the Autoruns window filter the list of auto-start items into various categories, the number of items can still be daunting. One nice feature of Autoruns is its ability to filter out components that are part of Windows or are digitally signed by Microsoft, as these are presumably safe to run. Commands on the Options menu control the appearance of these items.

You can also use the Compare feature in Autoruns to compare before and after snapshots of the data the program finds. Run Autoruns before you install a new program, save the data, run Autoruns again after you install the program, and compare the results to see what changes to auto-start behavior were made by the program installation.