「[クライアント管理]Adobe Reader、Acrobat、Flash Player、JREのサイレント・インストール(アップデート)」でも書いた通り、Java(JRE)はオプション付きでコマンド実行することにより、サイレント・インストールすることができます。
msiexec.exe /qn /x {26A24AE4-039D-4CA4-87B4-2F03217067FF}
のように、オプション付きでMsiexec.exeを実行することで、逆にサイレント・アンインストールすることもできるのですが、このときアンインストールしたいバージョンのJavaのGUIDが必要になります。
「Active Directoryを使用してネットワーク経由でJavaをデプロイする方法」によると、このGUIDは「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products」以下を調べれば良いようなので、レジストリーを検索して必要な値だけを取得するVBAマクロを書いてみました。
Option Explicit
Public Sub GetJavaGUID()
'JavaのGUIDを取得
Dim reg As Object
Dim names As Variant
Dim elm_names As Variant
Dim elm_types As Variant
Dim display_name As String
Dim uninstall_string As String
Dim i As Long, j As Long
Const HKEY_LOCAL_MACHINE = &H80000002
Const REG_SZ = 1
Const SubKeyName As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products"
Set reg = CreateObject("WbemScripting.SWbemLocator") _
.ConnectServer(, "root\default") _
.Get("StdRegProv")
reg.EnumKey HKEY_LOCAL_MACHINE, SubKeyName, names
If Not IsNull(names) Then
On Error Resume Next
For i = LBound(names) To UBound(names)
reg.EnumValues HKEY_LOCAL_MACHINE, _
SubKeyName & ChrW(92) & names(i) & ChrW(92) & "InstallProperties", _
elm_names, _
elm_types
If Not IsNull(elm_names) Then
'インストールされている製品を列挙
For j = LBound(elm_names) To UBound(elm_names)
'Debug.Print elm_names(j), elm_types(j) '確認用
If LCase(elm_names(j)) = "displayname" And elm_types(j) = REG_SZ Then
display_name = "" '初期化
reg.GetStringValue HKEY_LOCAL_MACHINE, _
SubKeyName & ChrW(92) & names(i) & ChrW(92) & "InstallProperties", _
elm_names(j), _
display_name
'[DisplayName]に[Java]を含む製品だけ処理
If InStr(LCase(display_name), "java") Then
uninstall_string = "" '初期化
reg.GetExpandedStringValue HKEY_LOCAL_MACHINE, _
SubKeyName & ChrW(92) & names(i) & ChrW(92) & "InstallProperties", _
"UninstallString", _
uninstall_string
Debug.Print "DisplayName:" & display_name, "UninstallString:" & uninstall_string
End If
End If
Next
End If
Next
On Error GoTo 0
End If
End Sub
「DisplayName」の値に「Java」が含まれるキーの、「UninstallString」の値を取得するだけのザックリしたマクロですが、手作業で行うよりは早くGUIDを調べることができるだろうと思います。
















この記事へのコメントはありません。