Office関連

JavaのGUIDを取得するVBAマクロ

[クライアント管理]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

GetJavaGUID_01

DisplayName」の値に「Java」が含まれるキーの、「UninstallString」の値を取得するだけのザックリしたマクロですが、手作業で行うよりは早くGUIDを調べることができるだろうと思います。

関連記事

  1. Office アドイン

    OfficeJS Snippet Explorerを使って新しいOffice アドインを体験する。

    前回の記事と打って変わって元のOffice アドインの記事に戻ります(…

  2. Office アドイン

    YO OFFICE(Yeoman)を使ってOffice アドインのひな型を作成する方法

    Webアプリのひな型を一発で作ってくれる便利ツール「Yeoman」には…

  3. Office アドイン

    [Office用アプリ]カレンダーから日付入力

    カレンダーから日付を選ぶだけで選択中のセルに日付を入力できるコンテンツ…

  4. Excel

    SeleniumBasic(Selenium VBA)がMicrosoft Edgeに対応しました。…

    言わずと知れたWebブラウザーの自動制御ツール「Selenium」のV…

  5. Office関連

    [Win32 API]PowerPointマクロにショートカットキーを割り当てる。

    数日前、“PowerPointだとマクロにショートカットキーを割り当て…

  6. Excel

    リボンのタブを選択するVBAマクロ

    マクロでリボンのタブを選択する方法として、ActivateTabやAc…

コメント

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

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP