无法在 Windows XP 中安装某些更新或程序

本文提供了一些高级手动方法,可用于修复一些阻止安装某些更新或程序的问题。

原始 KB 数: 822798

现象

尝试下载 ActiveX 控件、安装 Windows 或 Windows 组件的更新、为 Windows 或 Windows 组件安装 Service Pack 或安装 Microsoft 或第三方软件程序时,可能会遇到以下一个或多个症状:

备注

这些问题可能由于这些原因而发生

  • 尝试安装程序或更新时,会收到以下错误消息:

    找不到数字签名
    Microsoft数字签名确认软件已通过 Windows 进行测试,并且自测试软件以来尚未更改。
    要安装的软件不包含Microsoft数字签名。 因此,不能保证此软件适用于 Windows。
    软件包的名称
    如果要搜索Microsoft数字签名的软件,请访问Windows 更新网站http://update.microsoft.com以查看是否有可用软件。
    是否继续安装?

    如果单击“详细信息,将收到以下消息:

    Microsoft Windows
    要安装的软件包上的签名无效。 软件包未正确签名。

    在第一个错误消息对话框中单击“确定后,会收到一条消息,指出安装成功,或者收到以下错误消息:

    更新包的名称
    由于本地安全选项设置,加密操作失败。

  • 尝试安装更新或安装 Service Pack 时,会收到类似于以下任一项的错误消息:

    • 错误 1

      更新包的名称
      安装程序无法验证文件 Update.inf 的完整性。 确保加密服务在此计算机上运行。

    • 错误 2

      无法安装目录文件。

    • 错误 3

      正在安装的软件尚未通过 Windows 徽标测试来验证其与 Windows XP 的兼容性。 (告诉我为什么这次测试很重要。
      不会安装此软件。 请与系统管理员联系。

    • 错误 4

      正在安装的软件尚未通过 Windows 徽标测试来验证其与此版本的 Windows 的兼容性。 (告诉我为什么这次测试很重要。

  • 尝试安装 Windows XP Service Pack 时,会收到类似于以下内容的错误消息:

    Service Pack 1 安装程序无法验证文件的完整性。 确保加密服务在此计算机上运行。

  • 尝试安装 Microsoft 数据访问组件 (MDAC) 2.8 时,会收到类似于以下内容的错误消息:

    INF 安装失败。 原因:时间戳签名和/或证书无法验证或格式不正确。

  • %WINDIR%\System32\CatRoot2\Edb.log可能增长到 20 兆字节(MB),即使文件通常小于 1 MB。

  • 尝试从 Windows 更新 网站或从 Microsoft 更新网站安装包时,会收到如下所示的消息:

    该软件尚未通过 Windows 徽标测试,并且不会安装。

  • 检查 %systemroot%\Windowsupdate.log 文件时,会看到以下错误之一的条目:

    • 0x80096001
    • 0x80096005
    • 0x80096010
    • 0x800B0001
    • 0x800B0003
    • 0x800B0004
    • 0x800B0109
    • 0x8007f0da
    • 0x8007f01e
  • 在基于 Windows XP 的计算机上使用Microsoft Windows 更新时,更新过程会失败,并且会收到0x8007f007错误消息。 无论选择哪种类型的更新,都可能发生此情况。

  • Svcpack.log文件可能包含类似于以下内容的条目

937.406:GetCatVersion:无法从 C:\WINDOWS\system32 \CatRoot{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\Tmp.0.scw.cat 检索版本信息,并出现错误 0x57 Tmp.0.scw.cat 937.437:GetCatVersion:无法从 C:\WINDOWS\Tmp.0.scw.cat 检索版本信息,出现错误0x80092004 940.344:InstallSingleCatalogFile:MyInstallCatalog 失败,Tmp.0.scw.cat;error=0xfffffbfe。 940.344:DoInstallation:MyInstallCatalogFiles failed:STR_CATALOG_INSTALL_FAILED
955.125:UnRegisterSpuninstForRecovery,无法删除 SpRecoverCmdLine 值,错误0x2
955.125:DoInstallation:无法注销spuninst.exe进行恢复。
962.656:取消注册卸载程序 -> Windows Server 2003 Service Pack,0
962.656:无法安装目录文件。 1448.406:向用户显示的消息:无法安装目录文件。
1448.406:用户输入:确定
1448.406:Update.exe扩展错误代码 = 0xf01e
1448.406:Update.exe返回代码已屏蔽为 MSI 自定义操作符合性0x643。

原因

在以下任一情况下都可能出现这些问题:

  • %Systemroot%\System32\Catroot2 文件夹中存在日志文件或数据库损坏。
  • 加密服务 设置为 已禁用
  • 其他 Windows 文件已损坏或缺失。
  • 时间戳签名或证书无法验证或格式不正确。
  • 隐藏属性是为 %Windir% 文件夹或其子文件夹之一设置的。
  • 未签名的非驱动程序安装行为组策略设置(仅限 Windows 2000)设置为“不允许安装”或“警告”,但允许安装,或者策略二进制值未在以下注册表项中设置为 0:HKEY_LOCAL_MACHINE\Software\Microsoft\Non-Driver Signing
  • “启用受信任的发布者锁定组策略”设置处于打开状态,并且受信任的发布者证书存储中没有相应的证书。 此组策略设置位于“用户配置”、“Windows 设置”、“Internet Explorer 维护”下的“安全”下,位于组策略 MMC 管理单元的“验证码设置”
  • 正在安装 Internet Explorer 6 SP1,并安装 823559 (MS03-023) 安全更新。
  • 软件分发文件夹已损坏。

方法 1:重命名Edb.log文件

重命名Edb.log文件,然后再次尝试安装该程序。 若要重命名Edb.log文件,请执行以下步骤:

  1. 单击“开始”,单击“运行,在“打开”框中键入 cmd,然后单击“确定”。

    备注

    在基于 Windows Vista 的计算机上,单击“开始”,在“开始搜索文本框中键入 cmd,右键单击cmd.exe,然后单击“以管理员身份运行”。

  2. 在命令提示符下,键入以下命令,然后按 Enter:

    控制台
    ren %systemroot%\system32\catroot2\Edb.log *.tst
    

方法 2:暂时关闭受信任的发布者锁定并将相应的证书安装到受信任的发布者证书存储

可以继续使用 “启用受信任的发布者锁定 组策略”设置,但必须先将相应的证书添加到受信任的发布者证书存储。 为此,请关闭 “启用受信任的发布者锁定 组策略”设置,在受信任的发布者证书存储中安装相应的证书,然后重新启用 “启用受信任的发布者锁定 组策略”设置。 若要安装适用于 Microsoft Windows 和 Microsoft Internet Explorer 产品更新的相应证书,请执行以下步骤:

  1. 从Microsoft下载中心、Windows 更新目录或Microsoft更新下载要安装的Microsoft产品更新。

    有关如何从Microsoft下载中心下载产品更新的详细信息,请查看 如何从联机服务目录获取Microsoft支持文件。

    有关如何从Windows 更新目录中下载产品更新的详细信息,请查看如何从Windows 更新目录中下载包含驱动程序和修补程序的更新。

  2. 将产品更新包提取到临时文件夹。 用于执行此操作的命令行命令取决于要尝试安装的更新。 查看与更新关联的Microsoft知识库文章,以确定用于提取包的相应命令行开关。 例如,若要将 Windows XP 的824146安全更新提取到 C:\824146 文件夹,请运行 Windowsxp-kb824146-x86-enu -x:c:\824146。 若要将 Windows XP 的 828750 安全更新提取到 C:\828750 文件夹,请运行 q828750.exe /c /t:c:\828750

  3. 右键单击步骤 2 中创建的临时文件夹中产品更新包中的 KB Number.cat 文件,然后单击“ 属性”。

    备注

    KB Number.cat 文件可能位于子文件夹中。 例如,该文件可能位于 C:\824146\sp1\update 文件夹或 C:\824146\sp2\update 文件夹中。

  4. “数字签名 ”选项卡上,单击数字签名,然后单击“ 详细信息”。

  5. 单击“查看证书”,然后单击“安装证书”。

  6. 单击“下一步以启动证书导入向导。

  7. 单击“ 将所有证书放入以下存储区”,然后单击“ 浏览”。

  8. 单击“受信任的发布者,然后单击“确定”。

  9. 单击“ 下一步”,单击“ 完成”,然后单击“ 确定”。

方法 3:验证证书路径中所有证书的状态,并从另一台计算机导入丢失或损坏的证书

若要验证 Windows 或 Internet Explorer 产品更新证书路径中的证书,请执行以下步骤:

步骤 1:验证证书Microsoft

  1. 在 Internet Explorer 中,单击“工具”,然后单击“Internet 选项”

  2. “内容 ”选项卡上,单击“ 证书”。

  3. “受信任的根证书颁发机构 ”选项卡上,双击 Microsoft根颁发机构。 如果缺少此证书,请转到步骤 2。

  4. “常规 ”选项卡上,确保 从日期起 的有效期为 1/10/1997 到 2020 年 12 月 31 日

  5. “证书路径”选项卡上,验证此证书是否在“证书状态”下显示。

  6. 单击“确定”,然后双击“无责任接受证书”。

  7. “常规 ”选项卡上,确保 日期有效期1997 年 5 月 11 日到 2004 年 1 月 7 日

  8. “认证路径”选项卡上,验证此证书是否已过期或尚无效,或者此证书在“证书状态”下显示。

    备注

    尽管此证书已过期,但证书将继续工作。 如果证书丢失或吊销,操作系统可能无法正常工作。 有关详细信息,请查看 所需的受信任根证书

  9. 单击“确定,然后双击 GTE CyberTrust 根证书。 可能有多个具有相同名称的证书。 检查到期日期为 2006 年 2 月 23 日的证书。

  10. “常规 ”选项卡上,确保 日期的 有效期为 1996 年 2 月 23 日到 2006 年 2 月 23 日。

  11. “证书路径”选项卡上,验证此证书是否在“证书状态”下显示。

    备注

    尽管此证书已过期,但证书将继续工作。 如果证书丢失或吊销,操作系统可能无法正常工作。

  12. 单击“确定”,然后双击“解冻时间戳 CA”。

  13. “常规 ”选项卡上,确保 日期的 有效期为 12/31/1996 到 2020 年 12 月 31 日。

  14. “证书路径”选项卡上,验证此证书是否在“证书状态”下显示。

步骤 2:导入丢失或损坏的证书

如果其中一个或多个证书丢失或损坏,请将缺失或损坏的证书导出到另一台计算机,然后在计算机上安装证书。 若要在另一台计算机上导出证书,请执行以下步骤:

  1. 在 Internet Explorer 中,单击“工具”,然后单击“Internet 选项”
  2. “内容 ”选项卡上,单击“ 证书”。
  3. “受信任的根证书颁发机构 ”选项卡上,单击要导出的证书。
  4. 单击“导出,然后按照说明将证书导出为 DER 编码的二进制 x.509()。CER) 文件。
  5. 导出证书文件后,将其复制到要导入它的计算机。
  6. 在要导入证书的计算机上,双击该证书。
  7. 单击“安装证书”,然后单击“下一步”。
  8. 单击“完成”,然后单击“确定”

方法 4:清除临时文件并重启修补程序安装或 Service Pack 安装

若要清除临时文件并重启修补程序安装或 Service Pack 安装,请执行以下步骤:

  1. 单击“开始” ,再单击“运行” ,键入 cmd,然后单击“确定”

  2. 在命令提示符处,键入以下命令。 在每个命令后按 Enter。

    控制台
    net stop cryptsvc
    ren %systemroot%\System32\Catroot2 oldcatroot2
    net start cryptsvc
    exit
    
  3. 删除以下文件夹中的所有 tmp*.cat 文件:

    • %systemroot% \system32\CatRoot{127D0A1D-4EF2-11D1-8608-00C04FC295EE}
    • %systemroot% \system32\CatRoot{F750E6C3-38EE-11D1-85E5-00C04FC295EE}

    如果此文件夹中不存在以 tmp 开头的文件,请不要删除任何其他文件。 此文件夹中的 .cat 文件是安装修补程序和服务包所必需的。

    重要

    不要重命名 Catroot 文件夹。 Catroot2 文件夹由 Windows 自动重新创建,但如果已重命名 Catroot 文件夹,则不会重新创建 Catroot 文件夹。

  4. 从 %systemroot% \inf 文件夹中删除所有 oem*.* 文件。

  5. 重启失败的修补程序安装或 Service Pack 安装。

方法 5:清空软件分发文件夹

  1. 单击“开始”,单击“运行,键入 services.msc,然后单击“确定”。

    备注

    在基于 Windows Vista 的计算机上,单击“开始”,在“开始搜索框中键入 services.msc,右键单击 services.msc,然后单击“以管理员身份运行”。

  2. 在“服务”(本地)窗格中,右键单击“ 自动更新”,然后单击“ 停止”。

  3. 最小化“服务”(本地)窗口。

  4. 选择 Windows 分发文件夹的所有内容,然后删除它们。

    备注

    默认情况下,Windows 分发文件夹位于 驱动器 :\Windows\SoftwareDistribution 文件夹中。 在此位置, 驱动器 是安装 Windows 的驱动器的占位符。

  5. 确保 Windows 分发文件夹为空,然后最大化“服务”(本地)窗口。

  6. 在“ 服务”(本地) 窗格中,右键单击“ 自动更新”,然后单击“ 开始”。

  7. 重新启动计算机,然后再次运行Windows 更新。

方法 6:执行就地升级

如果所有这些方法都无法解决问题,可能需要执行就地升级。

数据收集

如果需要 Microsoft 支持方面的帮助,建议按照使用 TSS 针对与部署相关的问题收集信息中所述的步骤收集信息。