什么原因导致 MsiInstaller 不断重新配置应用程序(EventID 1035)?

什么原因导致 MsiInstaller 不断重新配置应用程序(EventID 1035)?

我有一台全新的机器,大约两个月前我们刚刚在上面安装了 Windows Server 2008 Enterprise。在事件日志中,我看到记录了数千个 EventID 1035。这是 MsiInstaller 一遍又一遍地重新配置大约十几个产品,大约每半小时循环一次。

有人见过这种情况吗?一开始,我进行了常规网络搜索,大多数解决方案都与安装 Dell System Center 或 Google 工具栏有关。

我们没有安装上述任何一种产品。

感谢您的帮助,

戴尔

答案1

我可以确认该问题是由 WMI 对 Win32_Product 类的查询触发的。但正如下面另一个问题中所述,如果您没有安装 SCCM/SMS,则无法使用 Win32reg_AddRemovePrograms,即使安装了也必须使用 Win32reg_AddRemovePrograms64 来获取 64 位程序列表

https://stackoverflow.com/questions/2416278/64bit-equivalent-class-for-a-wmi-class-win32reg-addremoveprograms

之前没有记录过这些是坏事,实际上它们是正确的做法。我认为微软选择在响应查询的同时进行修复检查只是糟糕的设计。查询不应该导致系统发生变化,这应该是不同的“功能”(WMI 方法)。合理的设计应该包括对较新操作系统的“系统维护”功能的定期检查,因为这也是可配置的,并且对用户/管理员来说很有意义。

无论如何,这是一台旧服务器,实际上即将退役(Windows 2003 64 位)。但多年来,我们所有的服务器都出现过这种情况(现在已经确认,这对性能造成了重大影响)。所以我必须再次检查较新的 2008 R2 服务器,看看这是否会是一个持续的生产问题。

但我真正想知道的是,我该如何向包装人员和支持工程师团队解释,他们不能使用那个 WMI 查询/API。我们有数百个脚本和工具,由许多不同的人为数千个软件包编写。这种事情绝不可能发生。因此,如果这种行为在 2008 R2 和其他受支持的操作系统版本中仍然发生,那么 MS 应该将其修复为一个关键的设计缺陷。如果情况仍然如此,我们肯定会上报!

答案2


更新


Windows 安装程序功能“自我修复已安装应用程序的检查。本质上,这意味着它将不断检查磁盘上的文件和注册表中的设置是否与相应软件包最初安装的内容相匹配。这些检查通常不会针对软件包安装的所有内容执行,而是针对所谓的“关键路径“。

在你看到的情况下自我修复循环运行,这通常意味着系统上的某个进程或另一个 MSI 更改了系统上的设置,随后自我修复的软件包也更改了设置。就像那个人说的,这就像加湿器和除湿器在同一个房间里打架 - 或者一只狗追着自己的尾巴。在找到并消除冲突之前,你什么也做不了。MSI 文件会一遍又一遍地重复“这是我的资源,我要把它改回来”。

需要确定 MSI 文件或系统进程所争论的冲突:http://www.installsite.org/pages/en/msifaq/a/1037.htm

MSI 文件中还存在其他设计错误,也可能引发同样的问题,例如将关键路径设置为硬编码、用户特定路径:C:\Documents and Settings\user1\Desktop。其他用户登录时将找不到此路径,并导致自我修复。另一个示例是将关键路径设置为系统帐户不可写入的文件夹。还有一个示例是将关键路径设置为临时文件(系统最终将删除该文件)。

如您所见,存在很多场景,但总是存在相同的问题:MSI 文件正在检查当前安装是否正确,并发现差异并尝试修复。

答案3

经过艰苦的研究我发现此 Microsoft 知识库文章这表明这些消息可能是由组策略筛选器或查询 Win32_Product WMI 类的应用程序生成的。遗憾的是,很难缩小导致问题的应用程序的范围。

答案4

我知道这是一篇旧帖子,但对那些在谷歌上搜索错误的人可能有用。我们发现 Qualy 代理导致了我们设备上的问题。我们已上报给供应商。

相关内容