Windows Update 为什么将 Windows 识别为 Macintosh
最近在新闻组中看到 N 多人都遇到了一个奇怪的问题。当他们试图连接 Windows Update 时,Windows Update 突然自动转向了:
并显示如下提示(如附件的截图所示):
好端端的 Windows 竟然被当做 Mac,真是令人哭笑不得。这到底是怎么回事呢?
如果遇到这样的问题,首先要确认一下自己的 Windows 是不是正版、能否通过正版验证,盗版 Windows 是无法解决的;其次要检查是否安装过某些可能会修改系统文件的软件,例如 Vista Transformation Pack 等,系统文件修改得过多,也容易引起这类问题。
有的人可能会说:我的 Windows 既不是盗版、也没有修改过任何系统文件,为什么也会遇到这样的问题呢?这就是该问题的第三种可能原因:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform 注册表项损坏或配置不正确。
当我们访问 Windows Update 时,Windows 会将 User Agent 的部分数据放在 IE 的请求中,其中即包含当前操作系统的版本信息。如果我们使用网络数据包捕获工具(例如 SmartSniff 等)捕获并查看数据包,可以看到当前 Windows 及 MSIE 的版本号信息。有时当我们访问一些特定的第三方站点时,站点会自动标明“您正在使用的 Windows 版本是 XXX、浏览器版本是 MSIE XX”这样的信息,就是因为这个原因。
经过微软工程师李佳的指点(在此向李工表示感谢),在 IE 向 Windows Update 发送的网络数据包中,有关当前操作系统版本的信息必须被放置在数据包的第一至第四位,如果代表操作系统版本的信息被放置在了第五位或更后,Windows Update 就会无法识别 Windows 的版本,并出现之前所述的建议访问 http://www.microsoft.com/mac 的错误提示。那么什么原因会引起操作系统版本信息被放置在第五位或更后呢?就是在 User Agent\Post Platform 这个注册表项中添加了太多由第三方软件建立的注册表项,例如“Mozilla”、“MSN 2.6”等等。
在 Windows 的默认设置中,我们在 User Agent\Post Platform 注册表项中看到的应该只有关于 .net Framework 及 Media Center、Tablet PC(Tablet PC 仅限 Windows XP Tablet PC Edition 2005)的信息,例如 .NET CLR 2.0.50727、Media Center PC 5.0、Tablet PC 1.7 等等。假如我们在 User Agent\Post Platform 中看到很多第三方软件添加的注册表项,同时 Windows Update 又出现了 Windows 变 Mac 的问题,那么这些第三方注册表项可能就是“罪魁祸首”。如果遇到这样的问题,我们可以将 User Agent\Post Platform 注册表项清空,重新启动 Windows 后可以自动重建;或者在 Windows Update 一切正常时事先备份一下 User Agent\Post Platform 注册表项、导出为 .REG 文件,出现问题后双击导入 .REG 文件进行恢复即可。