Java安装和卸载没有询问权限

客户提供了一个Windows Server 2012 R2实例用作我们的服务器。 今天上午(7月25日),我重新连接到该框来更改我的密码,并立即提示有关安装成功的Java,并卸载旧版本的Java。

这是令人震惊的,因为我们的服务器应用程序是基于Java的,并且当前运行在较旧版本的Java上(这对我们来说很好),卸载旧版Java可能会导致我们的服务器应用程序失败,如果删除了它正在使用的版本!

当然,我拒绝删除旧版本的Java,但是我的同事和我都感到不安,甚至提示我。 如果其他人login不了解我们的Java依赖关系,他们可能会删除旧版本。

我检查了我的Java更新设置,发现它被设置为检查,但在下载之前提示。 (因为我已经禁用,甚至检查。)

我们进一步调查,在事件查看器中发现,在7月20日中午左右,新版本的Java(8更新101)被安装在盒子上,显然我做了它(或用我的用户ID完成)。 然而,我们知道我没有这样做,因为那天我在黄石国家公园度假,没有互联网! 我的用户ID是具有pipe理权限的AD帐户,但名称为“smmccants”,没有共享密码。 我有一个会话在服务器上运行(我通常断开,而不是注销)。

从今天上午(上午10:00点前的7/25/2016)重新连接并与Java对话框交互,我无法在事件查看器中find任何有趣的东西。

我们想要了解发生了什么,并在将来防止它。 任何关于如何自动发生的想法以及我们应该在哪里寻找线索?

以下是我在EventViewer中find的日志。

从事件查看器(来源:MsiInstaller)在7/20/2016 11:59:44上午:

开始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制造商:Oracle Corporation。 安装成功或错误状态:0。

结束Windows Installer事务:C:\ Users \ smmccants \ AppData \ LocalLow \ Oracle \ Java \ jre1.8.0_101 \ jre1.8.0_101full.msi。 客户端进程ID:87064

开始Windows安装程序事务:{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 PM

产品: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 PM,从RestartManager获取一条消息:

结束会议0开始2016-07-20T17:00:29.904899600Z

现在RestartManager在12:00:40 PM:

开始时段0 – 2016-07-20T17:00:40.326806900Z

结束会议0开始2016-07-20T17:00:29.904899600Z

现在我们在12:01:07 PM得到真正可怕的MsiInstaller消息:

产品:Java 8 Update 77 – 删除已成功完成。

Windows Installer删除了该产品。 产品名称:Java 8 Update 77.产品版本:8.0.770.3。 产品语言:1033.制造商:甲骨文公司。 清除成功或错误状态:0。

下一条消息logging在SYSTEM用户下,而不是我。

结束Windows安装程序事务:{26A24AE4-039D-4Ca4-87B4-2F83218077F0}。 客户端进程ID:87064

这是我find的。

我们还没有看到问题再次发生。 我们做了两件事来帮助缓解这种行为:

  1. 将Java AutoUpdate设置为从不检查更新。
  2. 写我们的服务启动代码更聪明的地方,如果发现Java。 我们可以硬编码到一个Java版本的path,但是如果不存在的话,它会查询registry来查找安装的另一个版本。 这样,删除旧版本不应该打破我们的服务器。