设置程序访问和计算机默认值 (SPAD)

本主题讨论在 控制面板 中找到的“设置程序访问和计算机默认值”功能。 SPAD 位于 Windows Vista 及更高版本中的默认程序控制面板项下。 在 Windows XP 中,它位于 “添加或删除程序 ”项中,标题 为“设置程序访问和默认值”。

重要

本主题不适用于 Windows 10。 默认文件关联在 Windows 10 中的工作方式发生更改。 有关详细信息,请参阅有关 Windows 10 如何处理此文章中的默认应用的更改部分

 

使用“设置程序访问”和“计算机默认值”工具

注意

从 Windows 8 起,SPAD 会根据每个用户为当前用户配置默认值。 在 Windows 8 之前,SPAD 设置每台计算机的默认值。 如果用户尚未配置每用户默认值,系统将提示他们设置每用户默认值,而不是回退到每台计算机默认值。 如果以前设置了每用户默认设置,则 Windows Vista 和 Windows 7 中的用户可能从未看到每台计算机默认值,因为每用户默认会覆盖这些操作系统中的每台计算机默认值。

 

在 Windows XP 中,设置程序访问和默认值是控制面板“添加或删除程序”项中的一个选项。 在 Windows Vista 及更高版本中,它位于默认程序控制面板项下。 对于 已注册 的程序,它执行以下功能:

  • 为每个客户端类型启用默认程序选择(最多为 Windows 7)。
  • 允许控制程序的图标、快捷方式和菜单条目的显示。
  • 提供一组预设的默认程序选项。 (仅限 Windows XP Service Pack 1 (SP1)

此工具用于以下五种客户端类型。

  • 浏览器
  • 电子邮件
  • 即时消息程序
  • 媒体播放器
  • 适用于 Java 的虚拟机

设置程序访问和计算机默认值概述

Windows 8 设置程序访问和计算机默认值 页面显示在以下屏幕截图中。

设置程序访问和计算机默认条目视图的屏幕截图

向用户显示三个可能的配置选项,OEM 提供标题为“计算机制造商”的第四个选项。

Microsoft Windows

Microsoft Windows 配置包含一组随 Windows 一起提供的默认程序,如以下屏幕截图所示。

设置程序访问和默认 Microsoft 选项的屏幕截图

选择Microsoft Windows 配置还可以显示为五种客户端类型中的任何一种注册的每个程序的图标、快捷方式或菜单条目。 这些图标、快捷方式和菜单条目可供“ 开始”菜单或“开始 ”屏幕、桌面上以及添加到所有其他位置的用户使用。

非 Microsoft

以下 屏幕截图中显示的非Microsoft 配置用于用户系统上未由Microsoft生成的已注册应用程序。 这些应用程序可以预安装在用户的系统上,也可以是用户已安装的非Microsoft应用程序。

注意

应用程序必须注册才能在此页面上显示。 有关注册应用程序的说明,请参阅 使用客户端类型注册程序。

 

设置程序访问和默认非 Microsoft 选项的屏幕截图

选择“非Microsoft”选项还会删除对Microsoft Windows 配置中列出的Microsoft程序的图标、快捷方式和菜单条目的访问权限,这些程序包含这些程序的所有客户端类型。 这些Microsoft图标、快捷方式和菜单条目将从 “开始” 菜单、桌面和添加它们的其他位置中删除。

自定义

以下 屏幕截图中显示的自定义 配置使用户能够使用注册为五种客户端类型的默认可能性的Microsoft和非Microsoft程序的任何组合来自定义其系统。 这是 Windows 2000 Service Pack 3(SP3)中唯一可用的四个选项之一。

设置程序访问和默认自定义选项的屏幕截图

Microsoft Windows 和非Microsoft配置中显示的所有选项均可供自定义部分中的用户使用,以及不属于 Windows 的任何附加安装Microsoft应用程序。预选“使用当前 Web 浏览器 单选”按钮,如前面的屏幕截图所示。 无法从 UI 确定当前默认浏览器。 在 Windows 中调用 Web 链接或文件是发现当前默认浏览器的唯一方法。

当用户为某个程序选中“启用对此程序的访问权限”复选框时,该程序的图标、快捷方式和菜单条目将显示在开始菜单或“开始”屏幕、桌面或安装的任何其他位置。 清除此选项应删除这些图标、快捷方式和菜单条目,但是,这些选项的行为完全取决于应用程序供应商。 Windows 不会控制在整个 UI 中启用或删除访问权限的方式。 还必须了解应用程序不需要注册 “设置程序访问”和“计算机默认值”。

计算机制造商

标题为“计算机制造商”的第四个类别可以在某些系统上的 SPAD 窗口中显示。 计算机制造商可以选择使用一组自定义默认设置来预配置其计算机,并从自定义配置中提供的相同选择中进行选择。 (为了说明目的,注册了一组名为 LitWare 的应用程序,用于所有客户端类型。用户随时可以通过选择 计算机制造商选项返回到计算机制造商 的默认配置,如以下 Windows XP 屏幕截图所示。

注意

此配置不会在所有系统上显示。 有关详细信息,请参阅 OEM 预安装工具包(OPK)。

 

设置程序访问和默认计算机制造商选项的屏幕截图

LastUserInitiatedDefaultChange 注册表值

LastUserInitiatedDefaultChange 值已添加到注册表,以帮助应用程序识别和尊重用户的默认选择。 该值以 FILETIME 结构的形式保存REG_BINARY数据,该结构包含用户上次通过“设置程序访问”和“计算机默认值”工具更改了默认选项的日期和时间(以协调世界时(UTC)的形式。 此值位于以下子项下。

HKEY_LOCAL_MACHINE
   SOFTWARE
      Clients
         ClientTypeName
            LastUserInitiatedDefaultChange = FILETIME

以下方案对监视文件关联的应用程序使用此值。

  1. 应用程序在内部记录上次设置为其客户端类型的默认程序的时间(在安装时或稍后)。
  2. 应用程序检测到其客户端类型的默认程序已更改为本身以外的程序或它所表示的应用程序(在后台帮助程序的情况下)。 Windows 8 不支持。
  3. 应用程序读取 LastUserInitiatedDefaultChange 的值(上次用户发起的默认更改的时间戳),并将其与它作为默认选项存储的时间戳值进行比较。
  4. 如果 LastUserInitiatedDefaultChange 晚于应用程序的存储值,则该应用程序不应执行任何操作,因为用户通过 “设置程序访问和默认值 ”工具显式请求了更改。
  5. 应用程序在再次选择为默认值之前不再监视该文件关联。 Windows 8 不支持。

通过遵守此类方案,将尊重用户的愿望,并维护其系统的最终所有权。

筛选添加或删除程序列表

注意

本部分适用于 Windows XP Service Pack 2(SP2)及更高版本以及 Windows Server 2003 及更高版本。

 

在 Windows XP 和 Windows Server 2003 中,“添加或删除程序”下的“更改或删除程序”选项卡中显示的应用程序列表可由用户筛选,以排除应用程序更新的条目。 在这些版本的 Windows 中,这是通过窗口顶部的“ 显示更新 ”复选框完成的。 默认情况下未选择“显示更新”选项,因此除非用户选择显示更新,否则不会显示更新。 当添加或删除程序关闭时,对复选框状态的更改将保持不变;如果用户选择显示更新,则继续显示这些更新,直到用户清除复选框。

注意

Windows XP SP2 更新本身是筛选的例外。 无论复选框状态如何,它始终显示。

 

在 Windows Vista 及更高版本中,应用程序更新显示在单独控制面板专用于更新的单独页面上。 当用户单击“ 查看已安装的更新 ”任务链接时,将显示此页面。 没有用户可选择的选项,可在与已安装的程序相同的页面上显示更新。 尽管 UI 发生了更改,但注册为已安装程序的更新的机制与早期版本的 Windows 相同。

使用 Windows Installer 的Microsoft和非Microsoft应用程序无需执行任何进一步操作,才能将其更新识别为更新。 不使用 Windows Installer 的非Microsoft应用程序必须在注册表中声明某些值作为其安装的一部分,才能将其识别为对现有程序的更新。

以下示例演示了要声明哪些注册表值,以便将安装识别为对现有程序的更新。

  1. 父应用程序必须在 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall 子项下的子项中添加其卸载信息。 有关使用 Uninstall 子项的详细信息,请参阅安装主题。
  2. 对该父应用程序的每次更新还必须将其信息添加为 Uninstall 子项的子项。 它应使用其选择的特定命名约定,试图避免与其他程序的潜在冲突。 以下约定保留为子项名称,方法是Microsoft用于 Windows 更新。
    • IEUpdate
    • OEUpdate
    • “KB”后跟六位数字,例如“KB123456”
    • “Q”后跟六位数字,例如“Q123456”
    • 六位数字,例如“123456”
  3. 除了为父应用程序添加的标准卸载信息外,每个更新的子项还必须包括以下三个条目中的两个。 它们的值类型为REG_SZ。
    • ParentKeyName。 此值是必需的。 这是在步骤 1 中声明的父项子项的名称。 这会将更新与程序相关联。
    • ParentDisplayName。 此值是必需的。 如果没有子项与 ParentKeyName 中命名的子项匹配,则此值用作要在“添加或删除程序”中显示的 占位符父程序
    • InstallDate。 此值是可选的。 它应使用窗体 yyyymmdd 来指定日期。 此日期用于 UI 中更新条目旁显示的“已安装的 On” 信息。 如果没有 InstallDate 条目,或者不存在但没有分配给它的值,则会发生以下情况:
      • Windows Vista 和 Windows 7 以外的操作系统版本:未 显示任何已安装信息
      • Windows Vista 及更高版本:使用默认日期。 这是该更新的子项下的任何条目的“上次修改”日期。 这通常是将更新添加到注册表中的一天。 但是,因为它是“上次修改”日期,因此任何子项的后续更改都会导致 InstallDate 值更改为该更改的日期。

以下示例显示了更新 LitWare 豪华应用程序的相关注册表项。

HKEY_LOCAL_MACHINE
   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

未提供相应注册表信息的非Microsoft应用程序(如此选项之前生成的更新)将继续在已安装的程序列表中正常显示,并且不会筛选掉。

Windows Vista 和 Windows 7 以外的操作系统版本中的更新筛选通常是用户控制的设置,应该受到应用程序这样的尊重。 但是,在企业环境中,管理员可以控制是否为用户提供通过 DontGroupPatches 注册表值筛选更新的选项,如以下示例所示。

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               policies
                  Uninstall
                     DontGroupPatches = 0 or 1

此值的类型为REG_DWORD,如下所示。

DontGroupPatches 值 含义
0 向用户 显示“显示更新 ”复选框。 筛选取决于用户是否已选中此框。
1 显示更新 ”复选框将从 UI 中删除。 不会从列表中筛选更新。 此值实质上还原为 Windows XP SP1 行为,然后再 引入“显示更新 ”功能。
DontGroupPatches 条目不存在 这相当于将值设置为 0。

 

DontGroupPatches 在 Windows Vista 和 Windows 7 中不起作用,其中 UI 不包含复选框,并且始终筛选已注册的更新。

注意

策略仅由管理员设置。 应用程序不应更改此值。 有关如何设置基于注册表的组策略的详细信息,请参阅 组策略Windows Server 组策略

 

其他资源

文件关联的最佳做法

文件关联示例方案

在 Windows Vista 及更高版本中管理默认应用程序的指南

默认程序