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関連

    Office 2013 アイコン一覧(V)

    ・Office 2013 アイコン一覧 NUM…

  2. Office関連

    Microsoft Translator APIで文字列を翻訳するVBAマクロ

    以前書いた記事で、Google翻訳を使って文字列を翻訳するマクロを紹介…

  3. Acrobat

    Adobe Acrobat Reader DCの「ホーム」や「ツール」を非表示にする。

    Adobe Acrobat Reader DCでは、アプリケーションを…

  4. Office関連

    Office 2013 アイコン一覧(J)

    ・Office 2013 アイコン一覧 NUM…

  5. Office関連

    OneNoteのノート名を列挙するマクロ

    今回はOneNoteのノート名を列挙するマクロを紹介します。O…

  6. Office関連

    VBAでインターネット上のファイルをダウンロードする方法をまとめてみました。

    「VBA ファイル ダウンロード」といったキーワード検索でのアクセスが…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP