Working with Set Program Access and Computer Defaults (SPAD)

This topic discusses the Set Program Access and Computer Defaults (SPAD) feature found in the Control Panel. This is found under the Default Programs Control Panel item in Windows Vista. In Microsoft Windows XP, it was found in the Add or Remove Programs item and titled Set Program Access and Defaults.

Using the Set Program Access and Computer Defaults Tool

Note  Set Program Access and Defaults is available only in Windows XP Service Pack 1 (SP1) and later and Windows 2000 Service Pack 3 (SP3) and later releases. In Windows Vista it has been renamed Set Program Access and Computer Defaults. It is not available in Windows Server 2003.

Because SPAD sets machine-wide defaults, those defaults might never be seen by users in Windows Vista if they have previously set per-user defaults. Per-user defaults override per-computer defaults in that operating system.

In Windows XP and Windows 2000, Set Program Access and Defaults is a tool found as an option in the Control Panel application's Add or Remove Programs item. In Windows Vista, it is found under the Default Programs Control Panel item. For registered programs, it performs the following functions.

  • Allows the choice of default programs for each client type.
  • Allows control of the display of the program's icons, shortcuts, and menu entries.
  • Provides a set of preset default program choices. (Windows XP SP1 only)
This tool is used for the following five client types.
  • Browser
  • E-mail
  • Instant messenger
  • Media player
  • Virtual machine for Java

An Overview of Set Program Access and Defaults

The Set Program Access and Defaults page is shown here. This illustration comes from Windows XP. The user interface (UI) has not changed significantly for Windows Vista.

Set Program Access and Defaults entry view

Three possible configuration options are presented for the user's choice, with an additional choice being optionally presented.

Note  Only the options found under Custom are available in Windows 2000 SP3.

Computer Manufacturer

Computer manufacturers can choose to preconfigure their computers with a custom set of defaults, choosing from the same selections available in the Custom configuration. (For illustrative purposes, a fictional set of applications called LitWare is registered for use with all client types.) A user can return to the computer manufacturer's default configuration at any time by choosing the Computer Manufacturer option, as shown in this example.

Note  This configuration does not appear on all systems. For details, refer to the OEM Preinstallation Kit (OPK).

Set Program Access and Defaults computer manufacturer options

Microsoft Windows

The Microsoft Windows configuration consists of a set of default programs provided with Windows.

Set Program Access and Defaults Microsoft options

Selecting the Microsoft Windows configuration also shows the icons, shortcuts, or menu entries of each program registered for any of the five client types. Those icons, shortcuts, and menu entries are available to the user in the Start menu, on the desktop, and in all other locations to which they were added.


The Non-Microsoft configuration consists of registered applications on the user's system that are not produced by Microsoft. These applications can be preinstalled on the user's system, or they can be non-Microsoft applications that the user has chosen to install.

Note  Programs must register to appear on this page. For instructions on registering an application, see Registering Programs with Client Types.

Set Program Access and Defaults non-Microsoft options

Selecting the Non-Microsoft option also removes access to the icons, shortcuts, and menu entries of the programs listed in the Microsoft Windows configuration for all client types that have them. These icons, shortcuts, and menu entries are not seen in the Start menu, on the desktop, or in other locations.


The Custom configuration allows users to customize their systems with any combination of Microsoft and non-Microsoft programs registered as default possibilities for the five client types. This is the only one of the four options available in Windows 2000 SP3.

Set Program Access and Defaults custom options

All options presented in the Microsoft Windows and Non-Microsoft configurations are available to the user in the Custom section, as well as any additionally installed Microsoft applications that are not part of Windows. The Use my current Web browser radio button is preselected, as shown in the example above. There is no way to determine the current default browser from the UI. Invoking Web links or files in Windows is the only way to discover the current default browser. In the example above the options Microsoft Internet Explorer and Lit View are available to choose from as a default Web browser. Selecting one and then clicking the OK button at the bottom of the screen sets that program as the default.

By checking the Enable access to this program box that corresponds to a program, that program's icons, shortcuts, and menu entries are displayed in the Start menu, on the desktop, or in any other location to which they were installed. Unchecking this option should remove those icons, shortcuts, and menu entries.

Note  How these options behave is entirely up to the vendor of that application. Windows does not control how access is enabled or removed throughout the UI. It is also important to understand that applications are not required to register for Set Program Access and Computer Defaults.

The LastUserInitiatedDefaultChange Registry Value

The LastUserInitiatedDefaultChange value has been added to the registry to assist applications in recognizing and respecting the user's default choices. The value holds REG_BINARY data in the form of a FILETIME structure containing the time (in coordinated universal time (UTC)) of the last change in default choice through the Set Program Access and Computer Defaults tool. This value is found under the following subkey.

      • Clients
        • ClientTypeName

        • LastUserInitiatedDefaultChange = FILETIME

The following scenario uses this value for an application that monitors file associations.

  1. An application internally records the time when it was last set as the default program for its client type (either at installation or at a later time).
  2. The application detects that the default program for its client type has been changed to a program other than itself or the application it represents (in the case of background helper programs).
  3. The application reads the value of LastUserInitiatedDefaultChange (the time stamp of the last user-initiated default change) and compares it to the time stamp value it has stored for its own choice as default.
  4. If LastUserInitiatedDefaultChange is later than the application's stored value, then no action should be taken by that application because the change was explicitly requested by the user through the Set Program Access and Defaults tool.
  5. The application no longer monitors that file association until it is again chosen as the default.

By adhering to such a scheme, the user's desires are respected and their ultimate ownership of their system maintained.

Filtering the Add or Remove Programs List

Note  This section applies to Windows XP Service Pack 2 (SP2) and later and Windows Server 2003 and later. This functionality is not available in Windows 2000.

In Windows XP and Windows Server 2003, the list of applications displayed in the Change or Remove Programs tab under Add or Remove Programs can be filtered by the user to exclude entries for application updates. In these versions of Windows, this is accomplished through a Show updates check box at the top of the window. The Show updates option is not checked by default, so updates are not shown unless the user chooses to show them. Changes to the check box state persist when Add or Remove Programs is closed; if a user chooses to show the updates, they continue to be shown until the user unchecks the box.

Note  The Windows XP SP2 update itself is an exception to the filtering. It is always displayed regardless of the check box state.

In Windows Vista, application updates are displayed on a separate page in Control Panel dedicated to updates alone. This page is shown when the user clicks the View installed updates task link. There is no user-selectable option to show updates on the same page as installed programs. Despite the change in UI, the mechanism for registering as an update to an installed program remains the same as in earlier versions of Windows.

Microsoft and non-Microsoft applications that use the Windows Installer do not need to do anything further for their updates to be recognized as updates. Non-Microsoft applications that do not use Windows Installer must declare certain values in the registry as part of their installation to be recognized as an update to an existing program.

  1. The parent application must add its uninstall information in a subkey under the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall subkey. See the Installation topic for more information on using the Uninstall subkey.
  2. Each update to that parent application also must add its information as a subkey of the Uninstall subkey. It should use a particular naming convention of its choice, attempting to avoid potential conflicts with other programs. The following conventions are reserved as subkey names by Microsoft for use with Windows updates.
    • IEUpdate
    • OEUpdate
    • "KB" followed by six digits, for example "KB123456"
    • "Q" followed by six digits, for example "Q123456"
    • Six digits, for example "123456"
  3. In addition to the standard uninstall information added for the parent application, the subkeys for each update additionally must include the following three entries. Their values are of type REG_SZ.
    • ParentKeyName. This value is mandatory. This is the name of the parent's subkey declared in step 1. This associates the update with the program.
    • ParentDisplayName. This value is mandatory. If no subkey matches that named in ParentKeyName, this value is used as a placeholder parent program to be displayed in Add or Remove Programs.
    • InstallDate. This value is optional. It should use the form yyyymmdd to specify the date. This date is used for the Installed On information displayed next to the update's entry in the UI. If there is no InstallDate entry or if it is present but has no value assigned to it, the following occurs:
      • OS versions other than Windows Vista: No Installed On information is shown.
      • Windows Vista: A default date is used. This is the "last modified" date for any of the entries under that update's subkey. This is normally the day that the update was added to the registry. However, because it is a "last modified" date, any subsequent change to any of the subkey's entries causes the InstallDate value to be changed to the date of that change.

The following example shows the pertinent entries for an update to the LitWare Deluxe application.

    • Software
      • Microsoft
        • Windows
          • CurrentVersion
            • Uninstall
              • LitWare

              • DisplayName = LitWare Deluxe
                UninstallString = "C:\Program Files\LitWare\LitWare Deluxe\litware.exe" /uninstall
              • LitWare_Update123456

              • DisplayName = LitWare Deluxe Update 123456. Fixes printing problems.
                UninstallString = "C:\Program Files\LitWare\LitWare Deluxe\Updates\123456.exe" /uninstall
                ParentKeyName = LitWare
                ParentDisplayName = LitWare Deluxe
                InstallDate = 20050513

Non-Microsoft applications that do not supply the appropriate registry information, such as updates produced before this option was available, continue to be displayed normally in the list of installed programs and are not filtered out.

Update filtering in OS versions other than Windows Vista is normally a user-controlled setting and should be respected as such by applications. However, in an enterprise environment, administrators can control whether users are given the option to filter updates through the DontGroupPatches registry value.

    • Software
      • Microsoft
        • Windows
          • CurrentVersion
            • policies
              • Uninstall

              • DontGroupPatches = 0 or 1

This value is of type REG_DWORD and is interpreted as follows:

DontGroupPatches ValueMeaning
0The Show updates checkbox is displayed to the user. Filtering depends on whether the user has checked this box or not.
1The Show updates checkbox is removed from the UI. Updates are not filtered from the list. This value essentially reverts to Windows XP SP1 behavior, before the Show updates functionality was introduced.
DontGroupPatches entry not presentThis is equivalent to setting the value to 0.

DontGroupPatches has no effect in Windows Vista, where the UI contains no check box and registered updates are always filtered.

Note  Policies are set only by administrators. Applications should not alter this value. For more information on how to set a registry-based Group Policy, see Group Policy, Windows Server Group Policy World Wide Web link, Windows Server 2003 Group Policy World Wide Web link, or Group Policy Frequently Asked Questions (FAQ) World Wide Web link.

Related Topics

Community Additions