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を調べることができるだろうと思います。

[リボン・カスタマイズ]splitButton要素の内容を動的に変更する。前のページ

フォルダ内にあるExcelファイルをカウントするVBScript次のページ

関連記事

  1. Office関連

    [Word VBA]ルビ(ふりがな)ダイアログの操作に挑む(2)

    2016/10/28 追記:改良版のマクロを書きました。…

  2. Office関連

    ランダムな文字列を生成するVBAマクロ

    文字数を指定して0-9,A-Zまでのランダムな文字列を生成するマクロで…

  3. アイコン一覧

    Office 365アイコン(imageMso)一覧(N)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  4. アイコン一覧

    Office 365アイコン(imageMso)一覧(R)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  5. Office関連

    「2014年12月のWindows Update以降コマンドボタンが使えなくなった」トラブルへのFi…

    当ブログでも「KB2553154の更新プログラムをアンインストールする…

  6. Office アドイン

    [Officeアドイン]アドイン コマンド(Add-In Commands)の紹介(2)

    昨年末に書いた記事で「アドイン コマンド」を紹介しているのですが、知ら…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

PAGE TOP