客户提供了一个 Windows Server 2012R2 实例用作我们的服务器。今天早上(7 月 25 日)我重新连接到盒子以更改我的密码,并立即提示 Java 安装成功并卸载旧版本的 Java。
这是令人震惊的,因为我们的服务器应用程序是基于 Java 的,并且当前运行在旧版本的 Java 上(这对我们的目的来说很好),如果您删除它正在使用的版本,卸载旧版本的 Java 可能会导致我们的服务器应用程序失败!
当然,我拒绝删除旧版本的 Java,但我和我的同事对我什至被提示感到不安。如果其他人在不知道我们的 Java 依赖关系的情况下登录,他们可能会删除旧版本。
我检查了我的 Java 更新设置,发现它被设置为检查,但在下载之前会提示。(因为我什至禁用了检查。)
我们进一步调查并在事件查看器中发现,在 7 月 20 日中午左右,盒子上安装了新版本的 Java(8 更新 101),显然我已经完成了(或者使用我的用户 ID 完成了)。但是,我们知道我没有这样做,因为那天我在黄石国家公园度假,没有网络!我的用户 ID 是具有管理员权限的 AD 帐户,但名为“smmccants”并且没有共享密码。我确实在服务器上运行了一个会话(我通常断开连接而不是注销)。
今天早上(2016 年 7 月 25 日上午 10:00 之前)重新连接并与 Java 对话框交互时,我无法在事件查看器中找到任何有趣的东西。
我们想了解发生了什么,并在未来防止它发生。关于这如何自动发生以及我们应该在哪里寻找线索的任何想法?
以下是我在 EventViewer 中找到的日志。
2016 年 7 月 20 日上午 11:59:44 来自事件查看器(来源:MsiInstaller):
开始 Windows 安装程序事务:C:\Users\smmccants\AppData\LocalLow\Oracle\Java\jre1.8.0_101\jre1.8.0_101full.msi 客户端进程 ID:87064
来自 MsiInstaller 于 2016 年 7 月 20 日上午 12:00:29:
产品:Java 8 Update 101 -- 安装成功完成
-
Windows Installer 安装的产品。产品名称:Java 8 Update 101。产品版本:8.0.1010.13。产品语言:1033 制造商:甲骨文公司。安装成功或错误状态:0。
-
结束 Windows 安装程序事务:C:\Users\smmccants\AppData\LocalLow\Oracle\Java\jre1.8.0_101\jre1.8.0_101full.msi。客户端进程 ID:87064
-
开始 Windows Installer 事务:{4A03706f-666A-4037-7777-5F2748764D10}。客户端进程 ID:87064
然后从 RestartManager (不管是什么......):
开始会话 0 - 2016-07-20T17:00:29.904899600Z
最后,我们得到一个新的时间戳 7/20/16 12:00:39 和 MsiInstaller 报告:
产品:Java Auto Updater -- 删除成功完成。
谁下令删除,他们是如何通过我的用户帐户进行删除的?可能是 Java 8 Update 101 安装过程的一部分。
Windows Installer 删除了该产品。产品名称:Java 自动更新程序。产品版本:2.8.77.3 产品语言:1033 制造商:Oracle Corporation。删除成功或错误状态:0。
-
结束 Windows 安装程序事务:{4A03706f-666A-4037-7777-5F2748764D10}。客户端进程 ID:87064
-
开始 Windows 安装程序事务:C:\Users\smmccants\AppData\LocalLow\Oracle\Java\jre1.8.0_101\au.msi。客户端进程 ID:87064
现在中午 12:00:40
产品:Java Auto Updater -- 安装成功完成。
-
Windows Installer 安装了产品。产品名称:Java 自动更新程序。产品版本 2.8.101.13。产品语言:1033。制造商:甲骨文公司。安装成功或错误状态:0。
-
结束 Windows 安装程序事务:C:\Users\smccants\AppData\LocalLow\Oracle\Java\jre1.8.0_101\au.msi。客户端进程 ID:87064。
-
开始 Windows 安装程序事务:{26A24AE4-039D-4Ca4-87B4-2F83218077F0}。客户端进程 ID:87064
现在我们倒退一秒到下午 12:00:39 来获取来自 RestartManager 的一条消息:
结束会话 0 开始于 2016-07-20T17:00:29.904899600Z
现在在下午 12:00:40 重新启动管理器:
开始会话 0 - 2016-07-20T17:00:40.326806900Z
-
结束会话 0 开始于 2016-07-20T17:00:29.904899600Z
现在我们在下午 12:01:07 看到真正可怕的 MsiInstaller 消息:
产品:Java 8 Update 77 -- 删除成功完成。
-
Windows Installer 删除了该产品。产品名称:Java 8 Update 77。产品版本:8.0.770.3。产品语言:1033。制造商:甲骨文公司。删除成功或错误状态:0。
下一条消息记录在 SYSTEM 用户下,而不是我。
结束 Windows 安装程序事务:{26A24AE4-039D-4Ca4-87B4-2F83218077F0}。客户端进程 ID:87064
这就是我发现的全部。
我们还没有看到问题再次发生。我们做了两件事来帮助缓解这种行为: