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

    スライドショーをループ再生設定するPowerPointマクロ

    PowerPointでスライドショーを作成するとき、投影した後流しっぱ…

  2. Office関連

    代理人アクセスによって予定を追加するOutlookマクロ

    先日久々にmougの質問に回答しました。マクロを使って、Exc…

  3. Office関連

    CDOを使ってGmail送信を行うVBAマクロ(UTF-8対応版)

    2年ほど前にCDOを使ってGmail送信を行うVBAマクロについて記事…

  4. Office関連

    PDFのしおり数を取得するVBAマクロ

    「VBA Acrobat しおり数」といったキーワード検索でのアクセス…

  5. Office関連

    図形の結合を行うPowerPoint マクロ(ExecuteMsoメソッド編)

    Excel MVPの伊藤さんのブログで、PowerPointの「図形の…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP