在部署 Windows XP SP2 后,SMS 2003 和 Configuration Manager 2007 中的高级客户端不再工作

本文可帮助你解决以下问题:如果将组策略对象 (GPO) 配置为将 SMS 代理主机服务的启动模式设置为“自动”,则高级客户端不再工作。

原始产品版本:系统管理服务器 2003,System Center Configuration Manager 2007
原始 KB 编号: 919592

重要

本文包含的信息介绍如何帮助降低安全设置或关闭计算机上的安全功能。 可以进行这些更改来解决特定问题。 在进行这些更改之前,建议评估与在特定环境中实现此解决方法相关的风险。 如果实现此解决方法,请执行任何适当的附加步骤来帮助保护系统。

症状

将 Microsoft Windows XP Service Pack 2 (SP2) 部署到在 Microsoft Systems Management Server (SMS) 2003 或 System Center Configuration Manager 2007 中运行高级客户端的客户端计算机后,会遇到以下症状:

  • 高级客户端在客户端计算机上不再正常运行。 在这种情况下,高级客户端不再检索短信策略。 如果尝试在客户端计算机上的高级客户端中启动操作,则会收到以下错误消息:

    无法启动该操作。

  • 查看 SMS 日志文件时,将显示类似于以下信息的信息:

    在客户端计算机上的 %WINDIR%\System32\CCM\Logs\CcmExec.log 文件中

    调用 CoResumeClassObjects.CcmExec<日期><时间>3304 (0x0CE8) 时出错
    第 1 阶段初始化 (0x80004015) 失败。CcmExec<日期><时间>3304 (0x0CE8)
    第 1 阶段初始化 (0x80004015) 失败。CcmExec<日期><时间>3304 (0x0CE8)

    在客户端计算机上的 %WINDIR%\System32\CCM\Logs\execmgr.log 文件中

    命令行 = “\\<server>\<share>$\<folder>\update\update.exe” /q /f /forcerestart,
    Working Directory = \\<server>\<share>$\<folder>\execmgr<日期><时间>3292 (0x0CDC)
    为传递的命令行execmgr<日期><时间>3292 (0x0CDC)
    引发事件:
    [SMS_CodePage (437) , SMS_LocaleID (1033) ]
    SoftDistProgramStartedEvent 的实例
    {
    AdvertisementId = “<ID>”;
    ClientID = “GUID:<GUID>”;
    CommandLine = “\”\\\<server>\\<share>$\\<folder>\\update\\update.exe\“ /q /f /forcerestart”;
    DateTime = “<date and time.572000>+000”;
    MachineName = “<computername>”;
    PackageName = “<packagename>”;
    ProcessID = 228;
    ProgramName = “从 XP 或 XPSP1 自动升级”;
    SiteCode = “<siteCode>”;
    ThreadID = 3292;
    UserContext = “NT AUTHORITY\\SYSTEM”;
    WorkingDirectory = “\\\<\server>\\<share>$\\<folder>\\”;
    };
    execmgr<日期><时间>3292 (0x0CDC)
    已引发 Ad:ID>、Package:<<package>、Program:从 XP 或 XPSP1execmgr<升级日期><时间>3292 (0x0CDC)
    用户已注销.execmgr<日期><时间>2656 (0x0A60)
    当用户注销execmgr<日期><时间>2656 (0x0A60)
    已触发执行管理器计时器。execmgr<日期><时间>1348 (0x0544)
    已针对程序更新策略:MS04-028 - 适用于 XP 的 JPEG 更新、包: <包>、广告: <ID>execmgr<日期><时间>1408 (0x0580)
    程序退出代码 3010execmgr<日期><时间>2904 (0x0B58)
    查找 MIF 文件以获取程序状态execmgr<日期><时间>2904 (0x0B58)
    Package:<package>、Program:从 XP 或 XPSP1 自动升级成功的脚本,退出代码为 3010execmgr<日期><时间>2904 (0x0B58)
    引发事件:
    [SMS_CodePage (437) , SMS_LocaleID (1033) ]
    SoftDistProgramPrelimSuccessEvent 的实例
    {
    AdvertisementId = “<ID>”;
    ClientID = “GUID:<GUID>”;
    DateTime = “<date><time.781000>+000”;
    ExitCode = “3010”;
    MachineName = “<computername>”;
    PackageName = “<package>”;
    ProcessID = 228;
    ProgramName = “从 XP 或 XPSP1 自动升级”;
    SiteCode = “<siteCode>”;
    ThreadID = 2904;
    };
    execmgr<日期><时间>2904 (0x0B58)
    已引发 Ad:ID>、Package:<<package>、Program:从 XP 或 XPSP1execmgr<自动升级日期><时间>2904 (0x0B58)
    从 XP 或 XPSP1 自动升级程序执行完毕。 退出代码为 3010,执行状态为 SuccessRebootRequiredexecmgr<日期><时间>2904 (0x0B58)
    重新启动计算机 - 启动SystemShutdownEx 失败 1115execmgr<日期><时间>2904 (0x0B58)

    在 SMS 服务器上的 驱动器:\SMS_CCM\Logs\SMSCliUi.log 文件中

    当前分配的站点: <siteCode>smscliui<日期><时间>3320 (0x0CF8)
    无法获取 CacheInfo。 错误:0X80070005smscliui<日期><时间>3320 (0x0CF8)
    短信网站代码未更改。smscliui<日期><时间>3320 (0x0CF8)
    当前分配的站点: <siteCode>smscliui<日期><时间>3660 (0x0E4C)
    无法获取 CacheInfo。 错误:0X80070005smscliui<日期><时间>3660 (0x0E4C)
    无法实例化CLSID_CCMClientAction类,错误: 0x80070005smscliui<日期><时间>3660 (0x0E4C)

原因

如果将 GPO 配置为将 SMS 代理主机服务 (CcmExec.exe) 启动模式设置为 “自动”,则会出现此问题。

注意

默认情况下,不会使用 组策略 配置 SMS 代理主机服务。

解决方法 1:不要在 组策略 中定义 SMS 代理主机服务

修改 GPO 以不再定义 SMS 代理主机服务的启动模式。 为此,请按照下列步骤操作:

  1. 登录到域控制器,然后启动Active Directory 用户和计算机工具。 为此,请单击“ 开始>运行”, dsa.msc 在“ 打开 ”框中键入,然后单击“ 确定”。

  2. 右键单击在其中创建了 GPO 的容器,然后选择“ 属性”。 例如,右键单击域容器或右键单击组织单位,然后选择 “属性”。

  3. 选择“组策略”选项卡,选择在其中定义 SMS 代理主机服务的 GPO,然后选择“编辑”。

  4. 在“组策略对象编辑器”工具中,展开“计算机配置>”“Windows 设置>安全设置”,然后选择“系统服务”。

  5. 在右窗格中,双击“SMS 代理主机”,单击以清除“定义此策略设置检查”框,然后单击“确定”。

  6. 退出组策略对象编辑器工具,然后单击“确定”。

  7. 重启基于 Windows XP SP2 的客户端计算机。

解决方法 2:为 SMS 代理主机对象分配 NetworkService 帐户“完全控制”权限

警告

此解决方法可能会让计算机或网络更容易受到恶意用户或恶意软件(如病毒)的攻击。 我们不建议使用此解决方法,但会提供此信息,以便你可以自行决定实现此解决方法。 如果使用此解决方法,需自行承担风险。

如果将 NetworkService 帐户的“完全控制”权限分配给 组策略 中的 SMS 代理主机对象,则可以保留 SMS 代理主机服务的自动启动组策略。 为此,请按照下列步骤操作:

  1. 登录到域控制器,然后启动Active Directory 用户和计算机工具。 为此,请单击“ 开始>运行”, dsa.msc 在“ 打开 ”框中键入,然后单击“ 确定”。

  2. 右键单击在其中创建了 GPO 的容器,然后选择“ 属性”。 例如,右键单击域容器或右键单击组织单位,然后选择 “属性”。

  3. 选择“组策略”选项卡,选择在其中定义 SMS 代理主机服务的 GPO,然后选择“编辑”。

  4. 在“组策略对象编辑器”工具中,展开“计算机配置>”“Windows 设置>安全设置”,然后选择“系统服务”。

  5. 在右窗格中,双击“ SMS 代理主机”,然后选择“ 编辑安全性”。

  6. 在“ SMS 代理主机的安全性 ”对话框中,选择“ 添加”。

  7. 在“ 输入要选择的对象名称 ”框中键入 NetworkService,单击“ 检查名称”,然后单击“ 确定”。

  8. “NetworkService 的权限”框中,选择“允许”列中的“完全控制检查”框,然后单击“确定”。

  9. 在“ SMS 代理主机属性 ”对话框中,单击“ 确定”。

  10. 退出组策略对象编辑器工具,然后单击“确定”。