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 2016で新しい画面切り替え効果「変形」が追加さ…

  2. Windows関連

    Lhaplusのバージョンを取得するVBScript

    およそ2年ぶりに圧縮・解凍ソフトの「Lhaplus」がバージョンアップ…

  3. Office関連

    PowerShellからClosedXMLを使ってExcelファイルを作成する方法

    以前C#からClosedXMLを使ってExcelファイルを操作する方法…

  4. Office アドイン

    [Office用アプリ]日経パソコン 2013/8/26号 の記事

    日経パソコン 2013/8/26号 のニュース&トレンドにOffice…

  5. Excel

    続・Microsoft Edgeを操作するVBAマクロ(DOM編)

    以前VBAからMicrosoft Edgeを操作するマクロについて記事…

  6. Office関連

    [Office 365 Solo]Skypeってスマートフォンからも使えるの?

    「Office 365 Soloをインストールしみてました。」でも書い…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP